diff --git a/CMakeLists.txt b/CMakeLists.txt index c3cfd8c86616d23160ed5b261285f90feb57b1dc..d32b068b5bd09d5893dfe5bf52e9bb041fca4746 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ set(VERSION_MAJOR 3) set(VERSION_MINOR 0) set(VERSION_PATCH 1) -set( CLI_CLIENT_EXECUTABLE_NAME eosioc ) +set( CLI_CLIENT_EXECUTABLE_NAME cleos ) set( GUI_CLIENT_EXECUTABLE_NAME eosio ) set( CUSTOM_URL_SCHEME "gcs" ) set( INSTALLER_APP_ID "68ad7005-8eee-49c9-95ce-9eed97e5b347" ) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 8a603f7855f2da1c54afbbb9e8563e0a6ab3df38..708925f9c9f8282f09b641736b3bacf183cac2ca 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -4,22 +4,18 @@ RUN git clone -b master --depth 1 https://github.com/EOSIO/eos.git --recursive \ && cd eos \ && cmake -H. -B"/tmp/build" -GNinja -DCMAKE_BUILD_TYPE=Release -DWASM_ROOT=/opt/wasm -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/tmp/build -DSecp256k1_ROOT_DIR=/usr/local \ - && cmake --build /tmp/build --target install \ - && mkdir -p /opt/eosio/ && cp -r /tmp/build/bin /opt/eosio/bin && cp -r /tmp/build/contracts /contracts \ - && rm -rf /tmp/build && rm -rf /eos + && cmake --build /tmp/build --target install FROM ubuntu:16.04 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl && rm -rf /var/lib/apt/lists/* - -COPY --from=builder /opt/eosio /opt/eosio -COPY --from=builder /contracts /contracts -COPY start_eosiod.sh /opt/eosio/bin/ -COPY config.ini / -COPY genesis.json / - +COPY --from=builder /usr/local/lib/* /usr/local/lib/ +COPY --from=builder /tmp/build/bin /opt/eosio/bin +COPY --from=builder /tmp/build/contracts /contracts +COPY --from=builder /eos/Docker/config.ini /eos/genesis.json / +COPY start_nodeos.sh /opt/eosio/bin/start_nodeos.sh ENV EOSIO_ROOT=/opt/eosio -RUN chmod +x /opt/eosio/bin/start_eosiod.sh +RUN chmod +x /opt/eosio/bin/start_nodeos.sh ENV LD_LIBRARY_PATH /usr/local/lib VOLUME /opt/eosio/bin/data-dir ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin diff --git a/Docker/README.md b/Docker/README.md index 8ddb3c56fa24c0baedcc3950ef4b167b02ba4b96..02b20f4be97f3b25af0c5eb651bca11339ab25f7 100644 --- a/Docker/README.md +++ b/Docker/README.md @@ -16,22 +16,22 @@ cd eos/Docker docker build . -t eosio/eos ``` -## Start eosiod docker container only +## Start nodeos docker container only ```bash -docker run --name eosiod -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosiod.sh arg1 arg2 +docker run --name nodeos -p 8888:8888 -p 9876:9876 -t eosio/eos start_nodeos.sh arg1 arg2 ``` By default, all data is persisted in a docker volume. It can be deleted if the data is outdated or corrupted: ``` bash -$ docker inspect --format '{{ range .Mounts }}{{ .Name }} {{ end }}' eosiod +$ docker inspect --format '{{ range .Mounts }}{{ .Name }} {{ end }}' nodeos fdc265730a4f697346fa8b078c176e315b959e79365fc9cbd11f090ea0cb5cbc $ docker volume rm fdc265730a4f697346fa8b078c176e315b959e79365fc9cbd11f090ea0cb5cbc ``` Alternately, you can directly mount host directory into the container ```bash -docker run --name eosiod -v /path-to-data-dir:/opt/eosio/bin/data-dir -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosiod.sh arg1 arg2 +docker run --name nodeos -v /path-to-data-dir:/opt/eosio/bin/data-dir -p 8888:8888 -p 9876:9876 -t eosio/eos start_nodeos.sh arg1 arg2 ``` ## Get chain info @@ -40,29 +40,29 @@ docker run --name eosiod -v /path-to-data-dir:/opt/eosio/bin/data-dir -p 8888:88 curl http://127.0.0.1:8888/v1/chain/get_info ``` -## Start both eosiod and walletd containers +## Start both nodeos and walletd containers ```bash docker-compose up ``` -After `docker-compose up`, two services named eosiod and walletd will be started. eosiod service would expose ports 8888 and 9876 to the host. walletd service does not expose any port to the host, it is only accessible to eosioc when runing eosioc is running inside the walletd container as described in "Execute eosioc commands" section. +After `docker-compose up`, two services named nodeos and walletd will be started. nodeos service would expose ports 8888 and 9876 to the host. walletd service does not expose any port to the host, it is only accessible to cleos when runing cleos is running inside the walletd container as described in "Execute cleos commands" section. -### Execute eosioc commands +### Execute cleos commands -You can run the `eosioc` commands via a bash alias. +You can run the `cleos` commands via a bash alias. ```bash -alias eosioc='docker-compose exec walletd /opt/eosio/bin/eosioc -H eosiod' -eosioc get info -eosioc get account inita +alias cleos='docker-compose exec walletd /opt/eosio/bin/cleos -H nodeos' +cleos get info +cleos get account inita ``` Upload sample exchange contract ```bash -eosioc set contract exchange contracts/exchange/exchange.wast contracts/exchange/exchange.abi +cleos set contract exchange contracts/exchange/exchange.wast contracts/exchange/exchange.abi ``` If you don't need walletd afterwards, you can stop the walletd service using @@ -78,9 +78,9 @@ You can use docker compose override file to change the default configurations. F version: "2" services: - eosiod: + nodeos: volumes: - - eosiod-data-volume:/opt/eosio/bin/data-dir + - nodeos-data-volume:/opt/eosio/bin/data-dir - ./config2.ini:/opt/eosio/bin/data-dir/config.ini ``` @@ -95,5 +95,5 @@ docker-compose up The data volume created by docker-compose can be deleted as follows: ```bash -docker volume rm docker_eosiod-data-volume +docker volume rm docker_nodeos-data-volume ``` diff --git a/Docker/cleos.sh b/Docker/cleos.sh new file mode 100755 index 0000000000000000000000000000000000000000..26d2e38e8eab2193e547e43061e70a8e4f3e9a12 --- /dev/null +++ b/Docker/cleos.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Usage: +# Go into cmd loop: sudo ./cleos.sh +# Run single cmd: sudo ./cleos.sh + +PREFIX="docker exec docker_nodeos_1 cleos" +if [ -z $1 ] ; then + while : + do + read -e -p "cleos " cmd + history -s "$cmd" + $PREFIX $cmd + done +else + $PREFIX $@ +fi diff --git a/Docker/docker-compose.yml b/Docker/docker-compose.yml index 7a202580660a44210a59e4aed263e830c5f55c71..0cb006c91748e0c91ac7595ca5df2dc573fdd696 100755 --- a/Docker/docker-compose.yml +++ b/Docker/docker-compose.yml @@ -1,27 +1,27 @@ -version: "2" +version: "3" services: - eosiod: + nodeos: build: context: . image: eosio/eos - command: /opt/eosio/bin/start_eosiod.sh + command: /opt/eosio/bin/start_nodeos.sh ports: - 8888:8888 - 9876:9876 expose: - "8888" volumes: - - eosiod-data-volume:/opt/eosio/bin/data-dir + - nodeos-data-volume:/opt/eosio/bin/data-dir walletd: image: eosio/eos command: /opt/eosio/bin/eosiowd links: - - eosiod + - nodeos volumes: - walletd-data-volume:/opt/eosio/bin/data-dir volumes: - eosiod-data-volume: + nodeos-data-volume: walletd-data-volume: diff --git a/Docker/eosioc.sh b/Docker/eosioc.sh deleted file mode 100755 index e47156174ec08e4c90c94d24820b967e279f594d..0000000000000000000000000000000000000000 --- a/Docker/eosioc.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# Usage: -# Go into cmd loop: sudo ./eosioc.sh -# Run single cmd: sudo ./eosioc.sh - -PREFIX="docker exec docker_eosiod_1 eosioc" -if [ -z $1 ] ; then - while : - do - read -e -p "eosioc " cmd - history -s "$cmd" - $PREFIX $cmd - done -else - $PREFIX $@ -fi diff --git a/Docker/start_eosiod.sh b/Docker/start_nodeos.sh similarity index 93% rename from Docker/start_eosiod.sh rename to Docker/start_nodeos.sh index 983cf7e544fa290e23e3b0b47abf821e8c665b5f..1694a98a892eb04fe0d3b73066be922a26d75a9b 100755 --- a/Docker/start_eosiod.sh +++ b/Docker/start_nodeos.sh @@ -36,4 +36,4 @@ else CONFIG_DIR="" fi -exec /opt/eosio/bin/eosiod $CONFIG_DIR $@ +exec /opt/eosio/bin/nodeos $CONFIG_DIR $@ diff --git a/README.md b/README.md index b5647ebecd8bfdebe0fd2684aa555d0f774178cf..4304ca7a789400a71056db9b2c8bcbabe2f86f60 100644 --- a/README.md +++ b/README.md @@ -35,23 +35,23 @@ EOS.IO currently supports the following operating systems: 1. [Getting Started](#gettingstarted) 2. [Setting up a build/development environment](#setup) - 1. [Automated build script](#autobuild) + 1. [Automated build script](#autobuild) 1. [Clean install Linux (Amazon, Centos, Fedora, Mint, & Ubuntu) for a local testnet](#autoubuntulocal) 2. [Clean install Linux (Amazon, Centos, Fedora, Mint, & Ubuntu) for the public testnet](#autoubuntupublic) 3. [MacOS for a local testnet](#automaclocal) 4. [MacOS for the public testnet](#automacpublic) 3. [Building EOS and running a node](#runanode) - 1. [Getting the code](#getcode) - 2. [Building from source code](#build) - 3. [Creating and launching a single-node testnet](#singlenode) + 1. [Getting the code](#getcode) + 2. [Building from source code](#build) + 3. [Creating and launching a single-node testnet](#singlenode) 4. [Next steps](#nextsteps) 4. [Example Currency Contract Walkthrough](#smartcontracts) - 1. [Example Contracts](#smartcontractexample) - 2. [Setting up a wallet and importing account key](#walletimport) - 3. [Creating accounts for your smart contracts](#createaccounts) - 4. [Upload sample contract to blockchain](#uploadsmartcontract) - 5. [Pushing a message to a sample contract](#pushamessage) - 6. [Reading Currency Contract Balance](#readingcontract) + 1. [Example Contracts](#smartcontractexample) + 2. [Setting up a wallet and importing account key](#walletimport) + 3. [Creating accounts for your smart contracts](#createaccounts) + 4. [Upload sample contract to blockchain](#uploadsmartcontract) + 5. [Pushing a message to a sample contract](#pushamessage) + 6. [Reading Currency Contract Balance](#readingcontract) 5. [Running local testnet](#localtestnet) 6. [Running a node on the public testnet](#publictestnet) 7. [Doxygen documentation](#doxygen) @@ -61,8 +61,8 @@ EOS.IO currently supports the following operating systems: 2. [Clean install Centos 7 and higher](#manualdepcentos) 3. [Clean install Fedora 25 and higher](#manualdepfedora) 4. [Clean install Mint 18](#manualdepubuntu) - 4. [Clean install Ubuntu 16](#manualdepubuntu) - 5. [Clean install MacOS Sierra 10.12 and higher](#manualdepmacos) + 5. [Clean install Ubuntu 16](#manualdepubuntu) + 6. [Clean install MacOS Sierra 10.12 and higher](#manualdepmacos) ## Getting Started @@ -89,14 +89,13 @@ Choose whether you will be building for a local testnet or for the public testne :warning: **As of February 2018, `master` is under heavy development and is not suitable for experimentation.** :warning: -We strongly recommend following the instructions for building the public testnet version for [Ubuntu](#autoubuntupublic) or [Mac OS X](#automacpublic). `master` is in pieces on the garage floor while we rebuild this hotrod. This notice will be removed when `master` is usable again. Your patience is appreciated. +We strongly recommend following the instructions for building the public testnet version for [Linux](#autoubuntupublic) or [Mac OS X](#automacpublic). `master` is in pieces on the garage floor while we rebuild this hotrod. This notice will be removed when `master` is usable again. Your patience is appreciated. #### :no_entry: Clean install Linux (Amazon, Centos, Fedora, Mint, & Ubuntu) for a local testnet :no_entry: ```bash git clone https://github.com/eosio/eos --recursive - cd eos ./eosio_build.sh ``` @@ -114,11 +113,10 @@ Now you can proceed to the next step - [Creating and launching a single-node tes ```bash git clone https://github.com/eosio/eos --recursive - cd eos - -git checkout DAWN-2018-02-14 --recurse-submodules -./eosio_build.sh +git checkout DAWN-2018-02-14 +git submodule update --recursive +./build.sh ubuntu ``` For ease of contract development, one further step is required: @@ -139,7 +137,6 @@ Then clone the EOS repository recursively and run eosio_build.sh in the root `eo ```bash git clone https://github.com/eosio/eos --recursive - cd eos ./eosio_build.sh ``` @@ -147,7 +144,8 @@ cd eos For ease of contract development, one further step is required: ```bash -make install +cd build +sudo make install ``` Now you can proceed to the next step - [Creating and launching a single-node testnet](#singlenode) @@ -162,17 +160,17 @@ Then clone the EOS repository recursively, checkout the branch that is compatibl ```bash git clone https://github.com/eosio/eos --recursive - cd eos - -git checkout DAWN-2018-02-14 --recurse-submodules -./eosio_build.sh +git checkout DAWN-2018-02-14 +git submodule update --recursive +./build.sh darwin ``` For ease of contract development, one further step is required: ```bash -make install +cd build +sudo make install ``` Now you can proceed to the next step - [Running a node on the public testnet](#publictestnet) @@ -216,15 +214,15 @@ To run the test suite after building, run the `chain_test` executable in the `te EOS comes with a number of programs you can find in `~/eos/build/programs`. They are listed below: -* eosiod - server-side blockchain node component -* eosioc - command line interface to interact with the blockchain +* nodeos - server-side blockchain node component +* cleos - command line interface to interact with the blockchain * eosiowd - EOS wallet * eosio-launcher - application for nodes network composing and deployment; [more on eosio-launcher](https://github.com/EOSIO/eos/blob/master/testnet.md) ### Creating and launching a single-node testnet -After successfully building the project, the `eosiod` binary should be present in the `build/programs/eosiod` directory. Run `eosiod` -- it will probably exit with an error, but if not, close it immediately with Ctrl-C. If it exited with an error, note that `eosiod` created a directory named `data-dir` containing the default configuration (`config.ini`) and some other internals. This default data storage path can be overridden by passing `--data-dir /path/to/data` to `eosiod`. These instructions will continue to use the default directory. +After successfully building the project, the `nodeos` binary should be present in the `build/programs/nodeos` directory. Run `nodeos` -- it will probably exit with an error, but if not, close it immediately with Ctrl-C. If it exited with an error, note that `nodeos` created a directory named `data-dir` containing the default configuration (`config.ini`) and some other internals. This default data storage path can be overridden by passing `--data-dir /path/to/data` to `nodeos`. These instructions will continue to use the default directory. Edit the `config.ini` file, adding/updating the following settings to the defaults already in place: @@ -264,10 +262,10 @@ plugin = eosio::chain_api_plugin plugin = eosio::http_plugin ``` -Now it should be possible to run `eosiod` and see it begin producing blocks. -You can specify the location of a custom `config.ini` by passing the `--config-dir` argument to `eosiod`. +Now it should be possible to run `nodeos` and see it begin producing blocks. +You can specify the location of a custom `config.ini` by passing the `--config-dir` argument to `nodeos`. -When running `eosiod` you should get log messages similar to below. It means the blocks are successfully produced. +When running `nodeos` you should get log messages similar to below. It means the blocks are successfully produced. ``` 1575001ms thread-0 chain_controller.cpp:235 _push_block ] initm #1 @2017-09-04T04:26:15 | 0 trx, 0 pending, exectime_ms=0 @@ -292,24 +290,24 @@ EOS comes with example contracts that can be uploaded and run for testing purpos First, run the node ```bash -cd ~/eos/build/programs/eosiod/ -./eosiod +cd ~/eos/build/programs/nodeos/ +./nodeos ``` ### Setting up a wallet and importing account key -As you've previously added `plugin = eosio::wallet_api_plugin` into `config.ini`, EOS wallet will be running as a part of `eosiod` process. Every contract requires an associated account, so first, create a wallet. +As you've previously added `plugin = eosio::wallet_api_plugin` into `config.ini`, EOS wallet will be running as a part of `nodeos` process. Every contract requires an associated account, so first, create a wallet. ```bash -cd ~/eos/build/programs/eosioc/ -./eosioc wallet create # Outputs a password that you need to save to be able to lock/unlock the wallet +cd ~/eos/build/programs/cleos/ +./cleos wallet create # Outputs a password that you need to save to be able to lock/unlock the wallet ``` For the purpose of this walkthrough, import the private key of the `eosio` account, a system account included within genesis.json, so that you're able to issue API commands under authority of an existing account. The private key referenced below is found within your `config.ini` and is provided to you for testing purposes. ```bash -./eosioc wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 +./cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 ``` @@ -318,9 +316,9 @@ For the purpose of this walkthrough, import the private key of the `eosio` accou First, generate some public/private key pairs that will be later assigned as `owner_key` and `active_key`. ```bash -cd ~/eos/build/programs/eosioc/ -./eosioc create key # owner_key -./eosioc create key # active_key +cd ~/eos/build/programs/cleos/ +./cleos create key # owner_key +./cleos create key # active_key ``` This will output two pairs of public and private keys @@ -336,7 +334,7 @@ Save the values for future reference. Run the `create` command where `eosio` is the account authorizing the creation of the `currency` account and `PUBLIC_KEY_1` and `PUBLIC_KEY_2` are the values generated by the `create key` command ```bash -./eosioc create account eosio currency PUBLIC_KEY_1 PUBLIC_KEY_2 +./cleos create account eosio currency PUBLIC_KEY_1 PUBLIC_KEY_2 ``` You should then get a JSON response back with a transaction ID confirming it was executed successfully. @@ -344,7 +342,7 @@ You should then get a JSON response back with a transaction ID confirming it was Go ahead and check that the account was successfully created ```bash -./eosioc get account currency +./cleos get account currency ``` If all went well, you will receive output similar to the following: @@ -362,7 +360,7 @@ If all went well, you will receive output similar to the following: Now import the active private key generated previously in the wallet: ```bash -./eosioc wallet import XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +./cleos wallet import XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ``` @@ -371,14 +369,14 @@ Now import the active private key generated previously in the wallet: Before uploading a contract, verify that there is no current contract: ```bash -./eosioc get code currency +./cleos get code currency code hash: 0000000000000000000000000000000000000000000000000000000000000000 ``` With an account for a contract created, upload a sample contract: ```bash -./eosioc set contract currency ../../contracts/currency/currency.wast ../../contracts/currency/currency.abi +./cleos set contract currency ../../contracts/currency/currency.wast ../../contracts/currency/currency.abi ``` As a response you should get a JSON with a `transaction_id` field. Your contract was successfully uploaded! @@ -386,7 +384,7 @@ As a response you should get a JSON with a `transaction_id` field. Your contract You can also verify that the code has been set with the following command: ```bash -./eosioc get code currency +./cleos get code currency ``` It will return something like: @@ -397,13 +395,13 @@ code hash: 9b9db1a7940503a88535517049e64467a6e8f4e9e03af15e9968ec89dd794975 Before using the currency contract, you must issue the currency. ```bash -./eosioc push action currency issue '{"to":"currency","quantity":"1000.0000 CUR"}' --permission currency@active +./cleos push action currency issue '{"to":"currency","quantity":"1000.0000 CUR"}' --permission currency@active ``` Next verify the currency contract has the proper initial balance: ```bash -./eosioc get table currency currency account +./cleos get table currency currency account { "rows": [{ "currency": 1381319428, @@ -422,13 +420,13 @@ Anyone can send any message to any contract at any time, but the contracts may r The content of the message is `'{"from":"currency","to":"eosio","quantity":"20.0000 CUR","memo":"any string"}'`. In this case we are asking the currency contract to transfer funds from itself to someone else. This requires the permission of the currency contract. ```bash -./eosioc push action currency transfer '{"from":"currency","to":"eosio","quantity":"20.0000 CUR","memo":"my first transfer"}' --permission currency@active +./cleos push action currency transfer '{"from":"currency","to":"eosio","quantity":"20.0000 CUR","memo":"my first transfer"}' --permission currency@active ``` Below is a generalization that shows the `currency` account is only referenced once, to specify which contract to deliver the `transfer` message to. ```bash -./eosioc push action currency transfer '{"from":"${usera}","to":"${userb}","quantity":"20.0000 CUR","memo":""}' --permission ${usera}@active +./cleos push action currency transfer '{"from":"${usera}","to":"${userb}","quantity":"20.0000 CUR","memo":""}' --permission ${usera}@active ``` As confirmation of a successfully submitted transaction, you will receive JSON output that includes a `transaction_id` field. @@ -439,7 +437,7 @@ As confirmation of a successfully submitted transaction, you will receive JSON o So now check the state of both of the accounts involved in the previous transaction. ```bash -./eosioc get table eosio currency account +./cleos get table eosio currency account { "rows": [{ "currency": 1381319428, @@ -448,7 +446,7 @@ So now check the state of both of the accounts involved in the previous transact ], "more": false } -./eosioc get table currency currency account +./cleos get table currency currency account { "rows": [{ "currency": 1381319428, @@ -479,15 +477,15 @@ This command will generate two data folders for each instance of the node: `tn_d You should see the following response: ```bash -spawning child, programs/eosiod/eosiod --skip-transaction-signatures --data-dir tn_data_0 -spawning child, programs/eosiod/eosiod --skip-transaction-signatures --data-dir tn_data_1 +spawning child, programs/nodeos/nodeos --skip-transaction-signatures --data-dir tn_data_0 +spawning child, programs/nodeos/nodeos --skip-transaction-signatures --data-dir tn_data_1 ``` -To confirm the nodes are running, run the following `eosioc` commands: +To confirm the nodes are running, run the following `cleos` commands: ```bash -~/eos/build/programs/eosioc -./eosioc -p 8888 get info -./eosioc -p 8889 get info +~/eos/build/programs/cleos +./cleos -p 8888 get info +./cleos -p 8889 get info ``` For each command, you should get a JSON response with blockchain information. @@ -576,7 +574,7 @@ Install the development toolkit: sudo yum update sudo yum install git gcc72.x86_64 gcc72-c++.x86_64 autoconf automake libtool make bzip2 \ bzip2-devel.x86_64 openssl-devel.x86_64 gmp.x86_64 gmp-devel.x86_64 \ - libstdc++72.x86_64 python27-devel.x86_64 libedit-devel.x86_64 \ + libstdc++72.x86_64 python36-devel.x86_64 libedit-devel.x86_64 \ ncurses-devel.x86_64 swig.x86_64 gettext-devel.x86_64 ``` @@ -607,6 +605,50 @@ cd boost_1_66_0/ ./bootstrap.sh "--prefix=$BOOST_ROOT" ./b2 install ``` +Install [MongoDB (mongodb.org)](https://www.mongodb.com): + +```bash +mkdir ${HOME}/opt +cd ${HOME}/opt +curl -OL https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.3.tgz +tar xf mongodb-linux-x86_64-amazon-3.6.3.tgz +rm -f mongodb-linux-x86_64-amazon-3.6.3.tgz +ln -s ${HOME}/opt/mongodb-linux-x86_64-amazon-3.6.3/ ${HOME}/opt/mongodb +mkdir ${HOME}/opt/mongodb/data +mkdir ${HOME}/opt/mongodb/log +touch ${HOME}/opt/mongodb/log/mongod.log + +tee > /dev/null ${HOME}/opt/mongodb/mongod.conf <build EOS and run a Install the development toolkit: * Installation on Centos requires installing/enabling the Centos Software Collections -Repository. -[Centos SCL](https://wiki.centos.org/AdditionalResources/Repositories/SCL): + Repository. + [Centos SCL](https://wiki.centos.org/AdditionalResources/Repositories/SCL): ```bash sudo yum --enablerepo=extras install centos-release-scl sudo yum update sudo yum install -y devtoolset-7 scl enable devtoolset-7 bash +sudo yum install -y python33.x86_64 +scl enable python33 bash sudo yum install git autoconf automake libtool make bzip2 \ bzip2-devel.x86_64 openssl-devel.x86_64 gmp-devel.x86_64 \ - ocaml.x86_64 doxygen libicu-devel.x86_64 python27-devel.x86_64 \ + ocaml.x86_64 doxygen libicu-devel.x86_64 python-devel.x86_64 \ gettext-devel.x86_64 ``` @@ -683,6 +727,52 @@ cd boost_1_66_0/ ./b2 install ``` +Install [MongoDB (mongodb.org)](https://www.mongodb.com): + +```bash +mkdir ${HOME}/opt +cd ${HOME}/opt +curl -OL https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.3.tgz +tar xf mongodb-linux-x86_64-amazon-3.6.3.tgz +rm -f mongodb-linux-x86_64-amazon-3.6.3.tgz +ln -s ${HOME}/opt/mongodb-linux-x86_64-amazon-3.6.3/ ${HOME}/opt/mongodb +mkdir ${HOME}/opt/mongodb/data +mkdir ${HOME}/opt/mongodb/log +touch ${HOME}/opt/mongodb/log/mongod.log + +tee > /dev/null ${HOME}/opt/mongodb/mongod.conf < #include -#include #include #include diff --git a/contracts/currency/currency.hpp b/contracts/currency/currency.hpp index 17f63ba3a03ca739199d12f0e655d6b2539aeddf..f25485cc8dcd198c67812214d9a745ed427cb11a 100644 --- a/contracts/currency/currency.hpp +++ b/contracts/currency/currency.hpp @@ -4,4 +4,3 @@ */ #include -#include diff --git a/contracts/eosio.system/eosio.system.hpp b/contracts/eosio.system/eosio.system.hpp index 2b0691e6c0755d7c47114f6caaae0affb2c58cb8..1d0d6a7a8a681b82e24e72c0710f69a2a22a5b0e 100644 --- a/contracts/eosio.system/eosio.system.hpp +++ b/contracts/eosio.system/eosio.system.hpp @@ -4,7 +4,6 @@ */ #include #include -#include #include #include diff --git a/contracts/eosiolib/datastream.hpp b/contracts/eosiolib/datastream.hpp index 4f482c0343dfd9d52acf1ded7768fa6a4008edfd..4c878f8951f8b1d3e1bab07df5e53f75c452c9d3 100644 --- a/contracts/eosiolib/datastream.hpp +++ b/contracts/eosiolib/datastream.hpp @@ -1,5 +1,5 @@ /** - * @file db.h + * @file datastream.hpp * @copyright defined in eos/LICENSE.txt */ #pragma once diff --git a/contracts/eosiolib/db.h b/contracts/eosiolib/db.h index 3cfd9f3ccc16c6b6c0316dbe64e95b7d63a0d3c2..b21c02d2301c12a93a4e5d289411775206d75d1e 100644 --- a/contracts/eosiolib/db.h +++ b/contracts/eosiolib/db.h @@ -14,8 +14,8 @@ extern "C" { * * EOS.IO organizes data according to the following broad structure: * - * - **scope** - an account where the data is stored - * - **code** - the account name which has write permission + * - **code** - the account name which has write permission + * - **scope** - an account where the data is stored * - **table** - a name for the table that is being stored * - **record** - a row in the table * @@ -28,14 +28,10 @@ extern "C" { * * * @section tabletypes table Types - * There are several supported table types identified by the number and - * size of the index. + * These are the supported table types identified by the number and + * size of the index: * * 1. @ref dbi64 - * 2. @ref dbi128i128 - * - * The database APIs assume that the first bytes of each record represent - * the primary and/or secondary keys followed by an arbitrary amount of data. * * The @ref databaseCpp provides a simple interface for storing any fixed-size struct as * a database row. @@ -48,983 +44,6 @@ extern "C" { * @ingroup database */ -/** - * @defgroup dbi64 Single 64 bit Index table - * @brief These methods interface with a simple table with 64 bit unique primary key and arbitrary binary data value. - * @ingroup databaseC - * - * @see table class in C++ API - * - * Example - * @code - * #pragma pack(push, 1) - * struct test_model { - * account_name name; - * unsigned char age; - * uint64_t phone; - * }; - * - * test_model alice{ N(alice), 20, 4234622}; - * test_model bob { N(bob), 15, 11932435}; - * test_model carol{ N(carol), 30, 545342453}; - * test_model dave { N(dave), 46, 6535354}; - * - * int32_t res = store_i64(CurrentCode(), N(test_table), &dave, sizeof(test_model)); - * res = store_i64(CurrentCode(), N(test_table), &carol, sizeof(test_model)); - * res = store_i64(CurrentCode(), N(test_table), &bob, sizeof(test_model)); - * res = store_i64(CurrentCOde(), N(test_table), &alice, sizeof(test_model)); - * test_model alice; - * alice.name = N(alice); - * res = load_i64( current_receiver(), current_receiver(), N(test_table), &alice, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "load_i64"); - * - * res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "front_i64 1"); - * - * res = back_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "back_i64 2"); - * - * res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol previous"); - * - * res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "back_i64 2"); - * - * uint64_t key = N(alice); - * res = remove_i64(current_receiver(), N(test_table), &key); - * ASSERT(res == 1, "remove alice"); - * - * test_model lb; - * lb.name = N(bob); - * res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &lb, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && lb.name == N(bob), "lower_bound_i64 bob" ); - * - * test_model ub; - * ub.name = N(alice); - * res = upper_bound_i64( current_receiver(), current_receiver(), N(test_table), &ub, sizeof(test_model) ); - * ASSERT(res == sizeof(test_model) && ub.age == 15 && ub.name == N(bob), "upper_bound_i64 bob" ); - * @endcode - * @{ - */ - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the current scope/code context to modify - * - * @return 1 if a new record was created, 0 if an existing record was updated - * - * @pre datalen >= sizeof(uint64_t) - * @pre data is a valid pointer to a range of memory at least datalen bytes long - * @pre *((uint64_t*)data) stores the primary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post a record is either created or updated with the given scope and table. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t store_i64( account_name scope, table_name table, account_name bta, const void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the current scope/code context to modify - * - * @return 1 if the record was updated, 0 if no record with key was found - * - * @pre datalen >= sizeof(uint64_t) - * @pre data is a valid pointer to a range of memory at least datalen bytes long - * @pre *((uint64_t*)data) stores the primary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post a record is either created or updated with the given scope and table. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t update_i64( account_name scope, table_name table, account_name bta, const void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the stored record, should be initialized with the key to get - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if key was not found - */ -int32_t load_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the front record - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t front_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the back record - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t back_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the next record. Should be initialized with the key to get next record. - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if key was not found - */ -int32_t next_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the previous record. Should be initialized with the key to get previous record. - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if key was not found - */ -int32_t previous_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the lower bound. Should be initialized with the key to find lower bound of. - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if key was not found - */ -int32_t lower_bound_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the upper bound. Should be initialized with the key to find upper bound of. - * @param datalen - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if key was not found - */ -int32_t upper_bound_i64( account_name code, account_name scope, table_name table, void* data, uint32_t datalen ); - -/** - * @param scope - the account socpe that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table withing the scope/code context to query - * @param data - must point to at lest 8 bytes containing primary key - * - * @return 1 if a record was removed, and 0 if no record with key was found - */ -int32_t remove_i64( account_name scope, table_name table, void* data ); - -///@} db_i64 - -/** - * @defgroup dbstr Single String Index table - * @brief These methods interface with a simple table with String unique primary key and arbitrary binary data value. - * @ingroup databaseC - * - * @see table class in C++ API - * - * @{ - */ - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the current scope/code context to modify - * - * @return 1 if a new record was created, 0 if an existing record was updated - * - * @pre keylen >= 0 - * @pre key is a valid pointer to a range of memory at least keylen bytes long - * @pre the memory range [key...key+len) stores the primary key - * @pre valuelen >= 0 - * @pre value is a valid pointer to a range of memory at least valuelen bytes long - * @pre the memory range [value...value+valuelen) stores the arbitrary binary data value - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post a record is either created or updated with the given scope and table. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t store_str( account_name scope, table_name table, account_name bta, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the current scope/code context to modify - * - * @return 1 if the record was updated, 0 if no record with key was found - * - * @pre keylen >= 0 - * @pre key is a valid pointer to a range of memory at least keylen bytes long - * @pre the memory range [key...key+len) stores the primary key - * @pre valuelen >= 0 - * @pre value is a valid pointer to a range of memory at least valuelen bytes long - * @pre the memory range [value...value+valuelen) stores the arbitrary binary data value - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post a record is either created or updated with the given scope and table. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t update_str( account_name scope, table_name table, account_name bta, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param key - location of the record key - * @param keylen - length of the record key - * @param value - location to copy the record value - * @param valuelen - maximum length of the record value to read - * - * @return the number of bytes read or -1 if key was not found - */ - int32_t load_str( account_name code, account_name scope, table_name table, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param value - location to copy the front record value - * @param valuelen - maximum length of the record value to read - * @return the number of bytes read or -1 if key was not found - */ - int32_t front_str( account_name code, account_name scope, table_name table, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param value - location to copy the back record value - * @param valuelen - maximum length of the record value to read - * @return the number of bytes read or -1 if key was not found - */ - int32_t back_str( account_name code, account_name scope, table_name table, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param key - location of the record key - * @param keylen - length of the record key - * @param value - location to copy the next record value - * @param valuelen - maximum length of the record value to read - * @return the number of bytes read or -1 if key was not found - */ - int32_t next_str( account_name code, account_name scope, table_name table, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param key - location of the record key - * @param keylen - length of the record key - * @param value - location to copy the previous record value - * @param valuelen - maximum length of the record value to read - * @return the number of bytes read or -1 if key was not found - */ - int32_t previous_str( account_name code, account_name scope, table_name table, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param key - location of the record key - * @param keylen - length of the record key - * @param value - location to copy the lower bound record value - * @param valuelen - maximum length of the record value to read - * @return the number of bytes read or -1 if key was not found - */ - int32_t lower_bound_str( account_name code, account_name scope, table_name table, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - - /** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param key - location of the record key - * @param keylen - length of the record key - * @param value - location to copy the upper bound record value - * @param valuelen - maximum length of the record value to read - * @return the number of bytes read or -1 if key was not found - */ - int32_t upper_bound_str( account_name code, account_name scope, table_name table, char* key, uint32_t keylen, char* value, uint32_t valuelen ); - - /** - * @param key - location of the record key - * @param keylen - length of the record key - * - * @return 1 if a record was removed, and 0 if no record with key was found - */ - int32_t remove_str( account_name scope, table_name table, char* key, uint32_t keylen ); - - ///@} dbstr - -/** - * @defgroup dbi128i128 Dual 128 bit Index table - * @brief Interface to a database table with 128 bit primary and secondary keys and arbitary binary data value. - * @ingroup databaseC - * - * @param scope - the account where table data will be found - * @param code - the code which owns the table - * @param table - the name of the table where record is stored - * @param data - a pointer to memory that is at least 32 bytes long - * @param len - the length of data, must be greater than or equal to 32 bytes - * - * @return the total number of bytes read or -1 for "not found" or "end" where bytes - * read includes 32 bytes of the key - * - * These methods assume a database table with records of the form: - * - * ``` - * struct record { - * uint128 primary; - * uint128 secondary; - * ... arbitrary data ... - * }; - * - * ``` - * - * You can iterate over these indicies with primary index sorting records by { primary, secondary } and - * the secondary index sorting records by { secondary, primary }. This means that duplicates of the primary or - * secondary values are allowed so long as there are no duplicates of the combination {primary, secondary}. - * - * @see table class in C++ API - * - * Example - * @code - * struct test_model128x2 { - * uint128_t number; - * uint128_t price; - * uint64_t extra; - * uint64_t table_name; - * }; - * - * test_model128x2 alice{0, 500, N(alice), N(table_name)}; - * test_model128x2 bob{1, 1000, N(bob), N(table_name)}; - * test_model128x2 carol{2, 1500, N(carol), N(table_name)}; - * test_model128x2 dave{3, 2000, N(dave), N(table_name)}; - * int32_t res = store_i128i128(CurrentCode(), N(table_name), &alice, sizeof(test_model128x2)); - * res = store_i128i128(CurrentCode(), N(table_name), &bob, sizeof(test_model128x2)); - * ASSERT(res == 1, "db store failed"); - * res = store_i128i128(CurrentCode(), N(table_name), &carol, sizeof(test_model128x2)); - * ASSERT(res == 1, "db store failed"); - * res = store_i128i128(CurrentCode(), N(table_name), &dave, sizeof(test_model128x2)); - * ASSERT(res == 1, "db store failed"); - * - * test_model128x2 query; - * query.number = 0; - * res = load_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 0 && query.price == 500 && query.extra == N(alice), "load"); - * - * res = front_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 3 && query.price = 2000 && query.extra == N(dave), "front"); - * - * res = next_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), & query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 2 && query.price == 1500 && query.extra == N(carol), "next"); - * - * res = back_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 0 && query.price == 500 && query.extra == N(alice), "back"); - * - * res = previous_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 1 && query.price == 1000 && query.extra == N(bob), "previous"); - * - * query.number = 0; - * res = lower_bound_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 0 && query.price == 500 && query.extra == N(alice), "lower"); - * - * res = upper_bound_primary_i128i128(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 1 && query.price == 1000 && query.extra == N(bob), "upper"); - * - * query.extra = N(bobby); - * res = update_i128128(CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == sizeof(test_model128x2) && query.number == 1 & query.price == 1000 && query.extra == N(bobby), "update"); - * - * res = remove_i128128(CurrentCode(), N(table_name), &query, sizeof(test_model128x2)); - * ASSERT(res == 1, "remove") - * @endcode - * - * @{ - */ - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - the code which owns the table - * @param table - the ID/name of the table within the current scope/code context to modify - * @param data - location to copy the record, must be initialized with the primary key to load - * @param len - length of record to copy - * @return the number of bytes read, -1 if key was not found - * - * @pre len >= sizeof(uint128_t) - * @pre data is a valid pointer to a range of memory at least datalen bytes long - * @pre *((uint128_t*)data) stores the primary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post data will be initialized with the len bytes of record matching the key. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t load_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the front record of primary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t front_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the back record of primary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t back_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the next record of primary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t next_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the previous record of primary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t previous_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the upper bound of a primary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t upper_bound_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the lower bound of a primary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t lower_bound_primary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - the code which owns the table - * @param table - the ID/name of the table within the current scope/code context to modify - * @param data - location to copy the record, must be initialized with the secondary key to load - * @param len - length of record to copy - * @return the number of bytes read, -1 if key was not found - * - * @pre len >= sizeof(uint128_t) - * @pre data is a valid pointer to a range of memory at least datalen bytes long - * @pre *((uint128_t*)data) stores the secondary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post data will be initialized with the len bytes of record matching the key. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t load_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the front record of secondary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t front_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the back record of secondary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t back_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the next record of secondary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t next_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the previous record of secondary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t previous_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the upper bound of given secondary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t upper_bound_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the lower bound of given secondary key; must be initialized with a key. - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t lower_bound_secondary_i128i128( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the scope/code context to query - * @param data - must point to at lest 32 bytes containing {primary,secondary} - * - * @return 1 if a record was removed, and 0 if no record with key was found - */ -int32_t remove_i128i128( account_name scope, table_name table, const void* data ); -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the scope/code context to query - * @param data - must point to a at least 32 bytes containing (primary, secondary) - * @param len - the length of the data - * @return 1 if a new record was created, 0 if an existing record was updated - */ -int32_t store_i128i128( account_name scope, table_name table, account_name bta, const void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the ID/name of the table within the scope/code context to query - * @param data - must to a at least 32 bytes containing (primary, secondary) - * @param len - the length of the data - * @return 1 if the record was updated, 0 if no record with key was found - */ -int32_t update_i128i128( account_name scope, table_name table, account_name bta, const void* data, uint32_t len ); - -///@} dbi128i128 - -/** - * @defgroup dbi64i64i64 Triple 64 bit Index table - * @brief Interface to a database table with 64 bit primary, secondary and tertiary keys and arbitrary binary data value. - * @ingroup databaseC - * - * @param scope - the account where table data will be found - * @param code - the code which owns the table - * @param table - the name of the table where record is stored - * @param data - a pointer to memory that is at least 32 bytes long - * @param len - the length of data, must be greater than or equal to 32 bytes - * - * @return the total number of bytes read or -1 for "not found" or "end" where bytes - * read includes 24 bytes of the key - * - * These methods assume a database table with records of the form: - * - * ``` - * struct record { - * uint64 primary; - * uint64 secondary; - * uint64 tertiary; - * ... arbitrary data ... - * }; - * - * ``` - * - * You can iterate over these indices with primary index sorting records by { primary, secondary, tertiary }, - * the secondary index sorting records by { secondary, tertiary } and the tertiary index sorting records by - * { tertiary }. - * - * @see table class in C++ API - * - * Example - * @code - * struct test_model3xi64 { - * uint64_t a; - * uint64_t b; - * uint64_t c; - * uint64_t name; - * }; - * - * test_model3xi64 alice{ 0, 0, 0, N(alice) }; - * test_model3xi64 bob{ 1, 1, 1, N(bob) }; - * test_model3xi64 carol{ 2, 2, 2, N(carol) }; - * test_model3xi64 dave{ 3, 3, 3, N(dave) }; - * - * int32_t res = store_i64i64i64(CurrentCode(), N(table_name), &alice, sizeof(test_model3xi64)); - * res = store_i64i64i64(CurrentCode(), N(table_name), &bob, sizeof(test_model3xi64)); - * res = store_i64i64i64(CurrentCode(), N(table_name), &carol, sizeof(test_model3xi64)); - * res = store_i64i64i64(CurrentCode(), N(table_name), &dave, sizeof(test_model3xi64)); - * - * test_model3xi64 query; - * query.a = 0; - * res = load_primary_i64i64i64(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model3xi64)); - * ASSERT(res == sizeof(test_model3xi64) && query.name == N(alice), "load"); - * - * res = front_primary_i64i64i64(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model3xi64)); - * ASSERT(res == sizeof(test_model3xi64) && query.name == N(dave), "front"); - * - * res = back_primary_i64i64i64(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model3xi64)); - * ASSERT(res == sizeof(test_model3xi64) && query.name == N(alice), "back"); - * - * res = previous_primary_i64i64i64(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model3xi64)); - * ASSERT(res == sizeof(test_model3xi64) && query.name == N(bob), "previous"); - * - * res = next_primary_i64i64i64(CurrentCode(), CurrentCode(), N(table_name), &query, sizeof(test_model3xi64)); - * ASSERT(res == sizeof(test_model3xi64) && query.name == N(alice), "next");* - * - * @endcode - * @{ - */ - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - the code which owns the table - * @param table - the ID/name of the table within the current scope/code context to modify - * @param data - location to copy the record, must be initialized with the (primary,secondary,tertiary) to load - * @param len - length of record to copy - * @return the number of bytes read, -1 if key was not found - * - * @pre data is a valid pointer to a range of memory at least len bytes long - * @pre *((uint64_t*)data) stores the primary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post data will be initialized with the len bytes of record matching the key. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t load_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the front record of primary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t front_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the back record of primary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t back_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the next record of primary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t next_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the previous record of primary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t previous_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the upper bound of a primary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t upper_bound_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the lower bound of primary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t lower_bound_primary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - the code which owns the table - * @param table - the ID/name of the table within the current scope/code context to modify - * @param data - location to copy the record, must be initialized with the (secondary,tertiary) to load - * @param len - length of record to copy - * @return the number of bytes read, -1 if key was not found - * - * @pre data is a valid pointer to a range of memory at least len bytes long - * @pre *((uint64_t*)data) stores the secondary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post data will be initialized with the len bytes of record matching the key. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t load_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the front record of a secondary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t front_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the back record of secondary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t back_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the next record; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t next_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the previous record; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t previous_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the upper bound of tertiary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t upper_bound_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the lower bound of secondary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t lower_bound_secondary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - the code which owns the table - * @param table - the ID/name of the table within the current scope/code context to modify - * @param data - location to copy the record, must be initialized with the (tertiary) to load - * @param len - length of record to copy - * @return the number of bytes read, -1 if key was not found - * - * @pre data is a valid pointer to a range of memory at least len bytes long - * @pre *((uint64_t*)data) stores the tertiary key - * @pre scope is declared by the current transaction - * @pre this method is being called from an apply context (not validate or precondition) - * - * @post data will be initialized with the len bytes of record matching the key. - * - * @throw if called with an invalid precondition execution will be aborted - * - */ -int32_t load_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the front record of a tertiary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t front_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the back record of a tertiary key - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t back_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the next record; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t next_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the previous record; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t previous_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the upper bound of tertiary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t upper_bound_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param code - identifies the code that controls write-access to the data - * @param table - the ID/name of the table within the scope/code context to query - * @param data - location to copy the lower bound of tertiary key; must be initialized with a key value - * @param len - the maximum length of data to read, must be greater than sizeof(uint64_t) - * - * @return the number of bytes read or -1 if no record found - */ -int32_t lower_bound_tertiary_i64i64i64( account_name code, account_name scope, table_name table, void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the name of table where record is stored - * @param data - must point to at least 24 bytes containing {primary,secondary,tertiary} - * - * @return 1 if a record was removed, and 0 if no record with key was found - */ -int32_t remove_i64i64i64( account_name scope, table_name table, const void* data ); -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the name of table where record is stored - * @param data - must point to at least 24 bytes containing (primary,secondary,tertiary) - * @param len - length of the data - * @return 1 if a new record was created, 0 if an existing record was updated - */ -int32_t store_i64i64i64( account_name scope, table_name table, account_name bta, const void* data, uint32_t len ); - -/** - * @param scope - the account scope that will be read, must exist in the transaction scopes list - * @param table - the name of table where record is stored - * @param data - must point to at least 24 bytes containing (primary,secondary,tertiary) - * @param len - length of the data - * @return 1 if the record was updated, 0 if no record with key was found - */ -int32_t update_i64i64i64( account_name scope, table_name table, account_name bta, const void* data, uint32_t len ); -///@} dbi64i64i64 - int32_t db_store_i64(account_name scope, table_name table, account_name payer, uint64_t id, const void* data, uint32_t len); void db_update_i64(int32_t iterator, account_name payer, const void* data, uint32_t len); void db_remove_i64(int32_t iterator); diff --git a/contracts/eosiolib/db.hpp b/contracts/eosiolib/db.hpp deleted file mode 100644 index e4d0aa35011995313285b37cd8f662eb04b99232..0000000000000000000000000000000000000000 --- a/contracts/eosiolib/db.hpp +++ /dev/null @@ -1,344 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -#pragma once - -#include - - -namespace eosio { - -/** - * @defgroup databaseCpp Database C++ API - * @brief C++ APIs for interfacing with the database. It is based on pimpl idiom. - * @ingroup database - */ - - -template -struct table_impl_obj {}; - - -template -struct table_impl{}; - - -template<> -struct table_impl { - - static int32_t front_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return front_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t back_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return back_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t load_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return load_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t next_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return next_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t previous_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return previous_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t upper_bound_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return upper_bound_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t lower_bound_primary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return lower_bound_primary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t front_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return front_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t back_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return back_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t load_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return load_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t next_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return next_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t previous_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return previous_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t upper_bound_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return upper_bound_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t lower_bound_secondary( uint64_t code, uint64_t scope, uint64_t table_n, void* data, uint32_t len ) { - return lower_bound_secondary_i128i128( code, scope, table_n, data, len ); - } - - static int32_t remove( uint64_t scope, uint64_t table_n, const void* data ) { - return remove_i128i128( scope, table_n, data ); - } - - static int32_t store( account_name scope, table_name table_n, account_name bta, const void* data, uint32_t len ) { - return store_i128i128( scope, table_n, bta, data, len ); - } - - static int32_t update( account_name scope, table_name table_n, account_name bta, const void* data, uint32_t len ) { - return update_i128i128( scope, table_n, bta, data, len ); - } -}; - -template -struct table { - private: - typedef table_impl impl; - static_assert( sizeof(PrimaryType) + sizeof(SecondaryType) <= sizeof(Record), "invalid template parameters" ); - - public: - typedef PrimaryType primary; - typedef SecondaryType secondary; - - /** - * @brief Primary Index of the Table - */ - struct primary_index { - /** - * @param r - reference to a record to store the front record based on primary index. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool front( Record& r, uint64_t s = scope ) { - return impl::front_primary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to store the back record based on primary index. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool back( Record& r, uint64_t s = scope ) { - return impl::back_primary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to store next value; must be initialized with current. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool next( Record& r, uint64_t s = scope ) { - return impl::next_primary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to store previous value; must be initialized with current. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool previous( Record& r, uint64_t s = scope ) { - return impl::previous_primary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param p - reference to primary key to load; must be initialized with a value; - * @param r - reference to a record to load the value to. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool get( const PrimaryType& p, Record& r, uint64_t s = scope ) { - *reinterpret_cast(&r) = p; - return impl::load_primary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param p - reference to primary key to get the lower bound of; must be initialized with a value; - * @param r - reference to a record to load the value to. - * - * @return true if successful read. - */ - static bool lower_bound( const PrimaryType& p, Record& r ) { - return impl::lower_bound_primary( code, scope, table_n, &p &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param p - reference to primary key to get the upper bound of; must be initialized with a value; - * @param r - reference to a record to load the value to. - * - * @return true if successful read. - */ - static bool upper_bound( const PrimaryType& p, Record& r ) { - return impl::upper_bound_primary( code, scope, table_n, &p &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to remove from table; - * @param s - account scope. default is current scope of the class - * - * @return true if successfully removed; - */ - static bool remove( const Record& r, uint64_t s = scope ) { - return impl::remove( s, table_n, &r ) != 0; - } - }; - - /** - * @brief Secondary Index of the Table - */ - - struct secondary_index { - /** - * @param r - reference to a record to store the front record based on secondary index. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool front( Record& r, uint64_t s = scope ) { - return impl::front_secondary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to store the back record based on secondary index. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool back( Record& r, uint64_t s = scope ) { - return impl::back_secondary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to return the next record . - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool next( Record& r, uint64_t s = scope ) { - return impl::next_secondary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to return the next record. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool previous( Record& r, uint64_t s = scope ) { - return impl::previous_secondary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param p - reference to secondary index key - * @param r - reference to record to hold the value - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool get( const SecondaryType& p, Record& r, uint64_t s = scope ) { - return impl::load_secondary( code, s, table_n, &p &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param p - reference to secondary key to get the lower bound of; must be initialized with a value; - * @param r - reference to a record to load the value to. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - - static bool lower_bound( const SecondaryType& p, Record& r, uint64_t s = scope ) { - return impl::lower_bound_secondary( code, s, table_n, &p &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param p - reference to secondary key to get the upper bound of; must be initialized with a value; - * @param r - reference to a record to load the value to. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - static bool upper_bound( const SecondaryType& p, Record& r, uint64_t s = scope ) { - return impl::upper_bound_secondary( code, s, table_n, &p &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @param r - reference to a record to be removed. - * @param s - account scope. default is current scope of the class - * - * @return true if successfully removed. - */ - static bool remove( const Record& r, uint64_t s = scope ) { - return impl::remove( s, table_n, &r ) != 0; - } - }; - - /** - * @brief Fetches a record from the table. - * @details Fetches a record from the table. - * @param p - reference to primary key to retrieve - * @param r - reference to a record to load the value to. - * @param s - account scope. default is current scope of the class - * - * @return true if successful read. - */ - - static bool get( const PrimaryType& p, Record& r, uint64_t s = scope ) { - *reinterpret_cast(&r) = p; - return impl::load_primary( code, s, table_n, &r, sizeof(Record) ) == sizeof(Record); - } - - /** - * @brief Store a record in the table. - * @details Store a record in the table. - * @param r - reference to a record to store. - * @param s - account scope. default is current scope of the class - * - * @return true if successful store. - */ - static bool store( const Record& r, uint64_t s = scope, uint64_t b = bta ) { - eosio_assert( impl::store( s, table_n, b, &r, sizeof(r) ), "error storing record" ); - return true; - } - - /** - * @brief Update a record in the table. - * @details Update a record in the table. - * @param r - reference to a record to update. - * @param s - account scope. default is current scope of the class - * - * @return true if successful update. - */ - static bool update( const Record& r, uint64_t s = scope, uint64_t b = bta ) { - eosio_assert( impl::update( s, table_n, b, &r, sizeof(r) ), "error updating record" ); - return true; - } - - /** - * @brief Remove a record from the table. - * @details Remove a record from the table. - * @param r - reference to a record to remove. - * @param s - account scope. default is current scope of the class - * - * @return true if successful remove. - */ - static bool remove( const Record& r, uint64_t s = scope ) { - return impl::remove( s, table_n, &r ) != 0; - } - }; -/// @} - - - -} // namespace eosio - diff --git a/contracts/eosiolib/eosiolib.cpp b/contracts/eosiolib/eosiolib.cpp index 622f22e53017bf3c3615539f5eebbf956f39d86d..5994dee0100c4c742a1f610f9e7963d1b75c175a 100644 --- a/contracts/eosiolib/eosiolib.cpp +++ b/contracts/eosiolib/eosiolib.cpp @@ -1,5 +1,41 @@ #include "memory.hpp" +void* sbrk(size_t num_bytes) { + constexpr uint32_t NBPPL2 = 16U; + constexpr uint32_t NBBP = 65536U; + + static bool initialized; + static uint32_t sbrk_bytes; + if(!initialized) { + sbrk_bytes = __builtin_wasm_current_memory() * NBBP; + initialized = true; + } + + if(num_bytes > INT32_MAX) + return reinterpret_cast(-1); + + //uint32_t num_bytes = (uint32_t)num_bytesI; + const uint32_t prev_num_bytes = sbrk_bytes; + const uint32_t current_pages = __builtin_wasm_current_memory(); + + // round the absolute value of num_bytes to an alignment boundary + num_bytes = (num_bytes + 7U) & ~7U; + + // update the number of bytes allocated, and compute the number of pages needed + const uint32_t num_desired_pages = (sbrk_bytes + num_bytes + NBBP - 1) >> NBPPL2; + + if(num_desired_pages > current_pages) { + //unfortuately clang4 doesn't provide the return code of grow_memory, that's why need + //to go back around and double check current_memory to make sure it has actually grown! + __builtin_wasm_grow_memory(num_desired_pages - current_pages); + if(num_desired_pages != __builtin_wasm_current_memory()) + return reinterpret_cast(-1); + } + + sbrk_bytes += num_bytes; + return reinterpret_cast(prev_num_bytes); +} + namespace eosio { using ::memset; diff --git a/contracts/eosiolib/memory.hpp b/contracts/eosiolib/memory.hpp index 57adc7320a67896d3f557a81154fa427d7fb4d5b..c433761d06dd72f12399d39f3c3b815ef047eb6f 100644 --- a/contracts/eosiolib/memory.hpp +++ b/contracts/eosiolib/memory.hpp @@ -7,7 +7,7 @@ #include #include -#include +void* sbrk(size_t num_bytes); extern "C" { diff --git a/contracts/eosiolib/print.h b/contracts/eosiolib/print.h index b8c28c62a36a1e350d908c93f97cf2c7f09e9537..1eecbf4893520e88cea341797c874658cd31ad57 100644 --- a/contracts/eosiolib/print.h +++ b/contracts/eosiolib/print.h @@ -85,7 +85,8 @@ extern "C" { * printd(*(uint64_t*)(&double_value)); // Output: 0.5 * @endcode */ - void printd(double value); + void printdf(double value); + void printff(float value); void printdi(int64_t value); /** diff --git a/contracts/eosiolib/print.hpp b/contracts/eosiolib/print.hpp index 32327464f5789c449e751594006b0bbdd95d14ee..d26d96bbf3b7c3b6746a41425307e5f6adae0b72 100644 --- a/contracts/eosiolib/print.hpp +++ b/contracts/eosiolib/print.hpp @@ -33,7 +33,8 @@ namespace eosio { inline void print( int64_t num ) { printi(num); } - inline void print( double d ) { printdi( *((int64_t*)&d) ); } + inline void print( double d ) { printdf( d ); } + inline void print( float f ) { printff( f ); } /** * Prints 32 bit unsigned integer as a 64 bit unsigned integer diff --git a/contracts/eosiolib/system.h b/contracts/eosiolib/system.h index dc0f0771b8552e4f4071f0b99c4c2d02fe432f1e..9e9b87e925a27872cd961cf00c57c7d45f0b6291 100644 --- a/contracts/eosiolib/system.h +++ b/contracts/eosiolib/system.h @@ -31,6 +31,12 @@ extern "C" { */ void eosio_assert( uint32_t test, const char* cstr ); + /** + * This method will abort execution of wasm without failing the contract. This + * is used to bypass all cleanup / destructors that would normally be called. + */ + [[noreturn]] void eosio_exit( int32_t code ); + /** * Returns the time in seconds from 1970 of the last accepted block (not the block including this action) * @brief Get time of the last accepted block diff --git a/contracts/eosiolib/table.hpp b/contracts/eosiolib/table.hpp deleted file mode 100644 index 9c8421f646503801cca13be8abf777a1a618adb1..0000000000000000000000000000000000000000 --- a/contracts/eosiolib/table.hpp +++ /dev/null @@ -1,151 +0,0 @@ -#pragma once -#include -#include -#include - -namespace eosio { - - /** - * @tparam DefaultScope - the default - * @tparam TableName - the name of the table with rows of type T - * @tparam T - a struct where the first 8 bytes are used as primary/unique key - */ - template - class table64 - { - public: - static bool exists( uint64_t key, scope_name scope = DefaultScope) { - auto read = load_i64( DefaultScope, scope, TableName, (char*)&key, sizeof(key) ); - return read > 0; - } - - static T get( uint64_t key, scope_name scope = DefaultScope ) { - char temp[1024]; - *reinterpret_cast(temp) = key; - auto read = load_i64( DefaultScope, scope , TableName, temp, sizeof(temp) ); - eosio_assert( read > 0, "key does not exist" ); - - datastream ds(temp, uint32_t(read) ); - T result; - ds >> result; - return result; - } - - static T get_or_create( uint64_t key, scope_name scope = DefaultScope, const T& def = T() ) { - char temp[1024]; - *reinterpret_cast(temp) = key; - - auto read = load_i64( DefaultScope, scope, TableName, temp, sizeof(temp) ); - if( read < 0 ) { - set( def, scope ); - return def; - } - - datastream ds(temp, uint32_t(read) ); - T result; - ds >> result; - return result; - } - - static T get_or_default( uint64_t key, scope_name scope = DefaultScope, const T& def = T() ) { - char temp[1024]; - *reinterpret_cast(temp) = key; - - auto read = load_i64( scope, DefaultScope, TableName, temp, sizeof(temp) ); - if( read < 0 ) { - return def; - } - - datastream ds(temp, uint32_t(read) ); - T result; - ds >> result; - return result; - } - - static void set( const T& value = T(), scope_name scope = DefaultScope, uint64_t bta = BillToAccount ) { - auto size = pack_size( value ); - char buf[size]; - eosio_assert( size <= 1024, "singleton too big to store" ); - - datastream ds( buf, size ); - ds << value; - - store_i64( scope, TableName, bta, buf, ds.tellp() ); - } - - static void remove( uint64_t key, scope_name scope = DefaultScope ) { - remove_i64(scope, TableName, &key); - } - }; - - - template - class table_i64i64i64 { - public: - table_i64i64i64( uint64_t scope = Code ) - :_scope(scope){} - - bool primary_lower_bound( T& result, - uint64_t primary = 0, - uint64_t secondary = 0, - uint64_t tertiary = 0 ) { - - uint64_t temp[1024/8]; - temp[0] = primary; - temp[1] = secondary; - temp[2] = tertiary; - - auto read = lower_bound_primary_i64i64i64( Code, _scope, TableName, - (char*)temp, sizeof(temp) ); - if( read <= 0 ) { - return false; - } - - datastream ds( (char*)temp, sizeof(temp) ); - ds >> result; - return true; - } - - bool primary_upper_bound( T& result, - uint64_t primary = 0, - uint64_t secondary = 0, - uint64_t tertiary = 0 ) { - - uint64_t temp[1024/8]; - temp[0] = primary; - temp[1] = secondary; - temp[2] = tertiary; - - auto read = upper_bound_primary_i64i64i64( Code, _scope, TableName, - (char*)temp, sizeof(temp) ); - if( read <= 0 ) { - return false; - } - - result = unpack( (char*)temp, sizeof(temp) ); - return true; - } - - bool next_primary( T& result, const T& current ) { - const uint64_t* keys = reinterpret_cast(¤t); - return primary_upper_bound(result, keys[0], keys[1], keys[2]); - } - - void store( const T& value, account_name bill_to = BillToAccount ) { - char temp[1024]; - datastream ds(temp, sizeof(temp) ); - ds << value; - - store_i64i64i64( _scope, TableName, bill_to, temp, ds.tellp() ); - } - - void remove(uint64_t primary_key, uint64_t seconday_key, uint64_t tertiary_key) { - uint64_t temp[3] = { primary_key, seconday_key, tertiary_key }; - remove_i64i64i64(_scope, TableName, temp); - } - - private: - uint64_t _scope; - }; - -} diff --git a/contracts/exchange/Pegged Derivative Currency Design.md b/contracts/exchange/Pegged Derivative Currency Design.md new file mode 100644 index 0000000000000000000000000000000000000000..fc819ccd61f1c550e1e83a2d1820e5fdfb8921bf --- /dev/null +++ b/contracts/exchange/Pegged Derivative Currency Design.md @@ -0,0 +1,120 @@ +# Pegged Derivative Currency Design + +A currency is designed to be a fungible and non-callable asset. A pegged Derivative currency, such as BitUSD, is backed by a cryptocurrency held as collateral. The "issuer" is "short" the dollar and extra-long the cryptocurrency. The buyer is simply long the dollar. + + + +Background +---------- +BitShares created the first working pegged asset system by allowing anyone to take out a short position by posting collateral and issuing BitUSD at a minimum 1.5:1 collateral:debt ratio. The **least collateralized position** was forced to provide liquidity for BitUSD holders +any time the market price fell more than a couple percent below the dollar (if the BitUSD holder opted to use forced liquidation). + +To prevent abuse of the price feed, all forced liquidation was delayed. + +In the event of a "black swan" all shorts have their positions liquidated at the price feed and all holders of BitUSD are only promised a fixed redemption rate. + +There are several problems with this design: + +1. There is very **poor liquidity** in the BitUSD / BitShares market creating **large spreads** +2. The shorts take all the risk and only profit when the price of BitShares rises +3. Blackswans are perpetual and very disruptive. +4. It is "every short for themselves" +5. Due to the risk/reward ratio the supply can be limited +6. The **collateral requirements** limit opportunity for leverage. + +New Approach +------------ +We present a new approach to pegged assets where the short-positions cooperate to provide the +service of a pegged asset with **high liquidity**. They make money by encouraging people to trade +their pegged asset and earning income **from the trading fees rather than seeking heavy leverage** +in a speculative market. They also generate money by earning interest on personal short positions. + +The Setup Process +----------------- +An initial user deposits a Collateral Currency (C) into an smart contract and provides the initial +price feed. A new Debt token (D) is issued based upon the price feed and a 1.5:1 C:D ratio and the +issued tokens are deposited into the **Bancor market maker**. At this point in time there is 0 leverage by +the market maker because no D have been sold. The initial user is also issued exchange tokens (E) in the +market maker. + +At this point people can buy E or D and the Bancor algorithm will provide liquidity between C, E, and D. Due to +the fees charged by the the market maker the value of E will increase in terms of C. + +> Collateral currency = Smart Token/reserve of parent currency +> +> Issued tokens = Bounty Tokens (distributed to early holders / community supporters) +> +> Collateral Ratio (C:D) = reciprocal of Loan-to-Value Ratio (LTV) + +Maintaining the Peg +------------------- +To maximize the utility of the D token, the market maker needs to maintain a **narrow trading range** of D vs the Dollar. +The more **consistant and reliable this trading range** is, the more people (arbitrageur) will be willing to hold and trade D. There are several +situations that can occur: + +1. D is trading above a dollar +5% + + a. Maker is fully collateralized `C:D>1.5` + + - issue new D and deposit into maker such that collateral ratio is 1.5:1 + b. Maker is not fully collateralized `C:D<1.5` + + - adjust the maker weights to lower the redemption prices (defending capital of maker), arbitrageur will probably prevent this reality. + + > Marker Weights = Connector Weights (in Bancor) + > + > Redemption Price: The price at which a bond may be repurchased by the issuer before maturity + +2. D is selling for less than a dollar -5% + + a. Maker is fully collateralized `C:D>1.5` + + - adjust the maker weights to increase redemption prices + b. Maker is under collateralized `C:D<1.5` + ``` + - stop E -> C and E -> D trades. + - offer bonus on C->E and D->E trades. + - on D->E conversions take received D out of circulation rather than add to the market maker + - on C<->D conversion continue as normal + - stop attempting adjusting maker ratio to defend the price feed and let the price rise until above +1% + ``` + +Value of E = C - D where D == all in circulation, so E->C conversions should always assume all outstanding D was **settled at current maker price**. The result of such a conversion will **raise the collateral ratio**, unless they are forced to buy and retire some D at the current ratio. The algorithm must ensure the individual selling E doesn't leave those holding E worse-off from a D/E perspective (doesnot reduce D to a large extent). An individual buying E will create new D to maintain the same D/E ratio. + +This implies that when value of all outstanding D is greater than all C that E cannot be sold until the network +generates **enough in trading fees** to recaptialize the market. This is like a company with more debt than equity not allowing buybacks. In fact, **E should not be sellable any time the collateral ratio falls below 1.5:1**. + +BitShares is typical **margin call** territory, but holders of E have a chance at future liquidity if the situation improves. While E is not sellable, +E can be purchased at a 10% discount to its theoretical value, this will dilute existing holders of E but will raise capital and hopefully move E holders closer to eventual liquidity. + + +Adjusting Bancor Ratios by Price Feed +------------------------------------- +The price feed informs the algorithm of significant deviations between the Bancor effective price and the target peg. The price feed is necessarily a lagging indicator and may also factor in natural spreads between different exchanges. Therefore, the price feed shall have no impact unless there is a significant deviation (5%). When such a deviation occurs, the ratio is automatically adjusted to 4%. + +In other words, the price feed keeps the maker in the "channel" but does not attempt to set the real-time prices. If there is a sudden change and the price feed differs from maker by 50% then after the adjustment it will still differ by 4%. + +> Effective Price = Connected Tokens exchanged / Smart Tokens exchanged + +Summary +------- +Under this model holders of E are short the dollar and make money to recollateralize their positions via market activity. +Anyone selling E must **realize the losses as a result of being short**. +Anyone buying E can get in to take their place at the current collateral ratio. + +The value of E is equal to the value of a **margin postion**. +Anyone can buy E for a combination C and D equal to the current collateral ratio. + +Anyone may sell E for a personal margin position with equal ratio of C and D. +Anyone may buy E with a personal margin position. + +If they only have C, then they must use some of C to buy D first (which will move the price). +If they only have D, then they must use some of D to buy C first (which will also move the price). + +Anyone can buy and sell E based upon Bancor balances of C and (all D), they must sell their E for a combination of D and C at current ratio, then sell the C or D for the other. + + +Anytime collateral level falls below 1.5 selling E is blocked and buying of E is given a 10% bonus. +Anyone can convert D<->C using Bancor maker configured to maintain price within +/- 5% of the price feed. + + diff --git a/contracts/exchange/exchange.cpp b/contracts/exchange/exchange.cpp index c7bf503fb009b5f625520155321a1e42809054e8..9c96d7db10b3254e80cf710de4a0e13e568ef93c 100644 --- a/contracts/exchange/exchange.cpp +++ b/contracts/exchange/exchange.cpp @@ -244,6 +244,8 @@ namespace eosio { extern "C" { void apply( uint64_t code, uint64_t action ) { - eosio::exchange( current_receiver() ).apply( code, action ); + eosio::exchange ex( current_receiver() ); + ex.apply( code, action ); + eosio_exit(0); } } diff --git a/contracts/exchange/peg_design.txt b/contracts/exchange/peg_design.txt deleted file mode 100644 index 801862533a7d7f849368c2814e927bb5aa550ee9..0000000000000000000000000000000000000000 --- a/contracts/exchange/peg_design.txt +++ /dev/null @@ -1,122 +0,0 @@ -Pegged Derivitive Currency Design ------------------------ - -A Derivitive uses a price feed and collateral to enable two or -more parties to speculate on the future price of anything and to -settle their speculation in terms of the collateral. - -A currency is designed to be a fungible and non-callable asset. - -A pegged derivitive currency, such as BitUSD, is backed by a cryptocurrency -held as collateral. The "issuer" is "short" the dollar and extra-long the cryptocurrency. - -The buyer is simply long the dollar. - -Background ----------- -BitShares created the first working pegged asset system by allowing anyone to take out -a short position by posting collateral and issuing BitUSD at a minimum 1.5:1 collateral:debt -ratio. The least collateralized position was forced to provide liquidity for BitUSD holders -any time the market price fell more than a couple percent below the dollar (if the BitUSD holder opted to use forced liquidation). - -To prevent abuse of the price feed, all forced liquidation was delayed. - -In the event of a "black swan" all shorts have their positions liquidated at the price feed and all holders of BitUSD are only -promised a fixed redemption rate. - -There are several problems with this design: - -1. There is very poor liquidity in the BitUSD / BitShares market creating large spreads -2. The shorts take all the risk and only profit when the price of BitShares rises -3. Blackswans are perminentant and very disruptive. -4. It is "every short for themselves" -5. Due to the risk/reward ratio the supply can be limited -6. The collateral requirements limit opportunity for leverage. - -New Approach ------------- -We present a new approach to pegged assets where the short-positions cooperate to provide the -service of a pegged asset with high liquidity. They make money by encouraging people to trade -their pegged asset and earning income from the trading fees rather than seeking heavy leverage -in a speculative market. They also generate money by earning interest on personal short positions. - -The Setup Process ------------------ -An initial user deposits a collateral currency (C) into an smart contract and provides the initial -price feed. A new Debt token (D) is issued based upon the price feed and a 5:1 C:D ratio and the -issued tokens are deposited into the Bancor market maker. At this point in time there is 0 leverage by -the market maker because no D have been sold. The initial user is also issued exchange tokens E in the -market maker. - -At this point people can buy E or D and the Bancor algorithm will provide liquidity between C, E, and D. Due to -the fees charged by the the market maker the value of E will increase in terms of C. - -Maintaining the Peg -------------------- -To maximize the utility of the D token, the market maker needs to maintain a narrow trading range of D vs the Dollar. The -more consistant and reliable this trading range is, the more people will be willing to hold and trade D. There are several -situations that can occur: - -1. D is trading above a dollar +5% - a. Maker is fully collateralized at 5:1 - - issue new D and deposit into maker such that collateral ratio is 5:1 - b. Maker is not fully collateralized - - adjust the maker weights to lower the redemption prices (defending capital of maker), arb will probably prevent this reality. -2. D is selling for less than a dollar -5% - a. Maker is fully collateralized at more than 1.5:1 - - adjust the maker weights to increase redemption prices - c. Maker is under collateralized less than 1.5:1 - - stop E -> C and E -> D trades. - - offer bonus on C->E and D->E trades. - - on D->E conversions take received D out of circulation rather than add to maker - - on C<->D conversion continue as normal - - stop attempting adjusting maker ratio to defend the price feed and let the price float unless price is above +1% - -Value of E = C - D where D == all in circulation, so E->C conversions should always assume all outstanding -D was settled at current maker price. The result of such a conversion will lower the collateral ratio, unless they are forced -to buy and retire some D at the current ratio. The algorithm must ensure the individual selling E doesn't leave those holding E -worse-off from a D/E perspective. An individual buying E will create new D to maintain the same D/E ratio. - - -This implies that when value of all outstanding D is greater than all C that E cannot be sold until the network -generates enough in trading fees to recaptialize the market. This is like a company with more debt than equity not allowing buybacks. In fact, E should -not be sellable any time the collateral ratio falls below 1.5:1. In exchanges like BitShares this is typical margin call -territory, but in this system holders of E have a chance at future liquidity if the situation improves. While E is not sellable -E can be purchased at a 10% discount to its theoretical value, this will dilute existing holders of E but will raise capital and -hopefully move E holders closer to eventual liquidity. - - -Adjusting Bancor Ratios by Price Feed -------------------------------------- -The price feed informs the algorithm of significant deviations between the Bancor price and the target peg. The price feed -is necisarially a lagging indicator and may also factor in natural spreads between different exchanges. Therefore, the price -feed shall have no impact unless there is a significant deviation (5%). When such a deviation occurs, the ratio is adjusted such -that there is still a 4% difference. In other words, the price feed keeps the maker in the "channel" but does not attempt to -set the real-time prices. If there is a sudden change and the pricefeed differs from maker by 50% then after the adjustment it will -still differ by 4%. - -Summary -------- -Under this model holders of E are short the dollar and make money to recollateralize their positions via market activity. Anyone -selling E must realize the losses as a result of being short. Anyone buying E can get in to take their place at the current collateral ratio. - -The value of E is equal to the value of a margin postion. -Anyone can buy E for a combination C and D equal to the current collateral ratio. - -Anyone may sell E for a personal margin position with equal ratio of C and D -Anyone may buy E with a personal margin position - -If they only have C, then they must use some of C to buy D first (which will move the price) -If they only have D, then they must use some of D to buy C first (which will also move the price) - -Anyone can buy and sell E based upon Bancor balances of C and (all D), they must sell their E for a combination of D and C at current ratio, then sell the C or D for the other. - - -Anytime collateral level falls below 1.5 selling E is blocked and buying of E is given a 10% bonus. -Anyone can convert D<->C using Bancor maker configured to maintain price within +/- 5% of the price feed. - - - - - - diff --git a/contracts/identity/test/identity_test.cpp b/contracts/identity/test/identity_test.cpp index f70c1ce89964c1b622110b4e2352afb9e38271c0..33d702d59a317bc487aa2e5670e23cda1f157d45 100644 --- a/contracts/identity/test/identity_test.cpp +++ b/contracts/identity/test/identity_test.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include diff --git a/contracts/simpledb/CMakeLists.txt b/contracts/simpledb/CMakeLists.txt deleted file mode 100644 index acb36bda8eae6c60e3ad7a7cadb2031131d13941..0000000000000000000000000000000000000000 --- a/contracts/simpledb/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -add_wast_executable(TARGET simpledb - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) diff --git a/contracts/simpledb/simpledb.abi b/contracts/simpledb/simpledb.abi deleted file mode 100644 index 9b8ae3ec89415ec884790c06efb4c474cb203d76..0000000000000000000000000000000000000000 --- a/contracts/simpledb/simpledb.abi +++ /dev/null @@ -1,271 +0,0 @@ -{ - "types": [], - "structs": [{ - "name": "record1", - "base": "", - "fields": [{ - "name": "key", - "type": "uint64" - },{ - "name": "u256", - "type": "uint256" - },{ - "name": "u128", - "type": "uint128" - },{ - "name": "u64", - "type": "uint64" - },{ - "name": "u32", - "type": "uint32" - },{ - "name": "u16", - "type": "uint16" - },{ - "name": "u8", - "type": "uint8" - },{ - "name": "i64", - "type": "int64" - },{ - "name": "i32", - "type": "int32" - },{ - "name": "i16", - "type": "int16" - },{ - "name": "i8", - "type": "int8" - } - ] - },{ - "name": "insert_record1", - "base": "", - "fields": [{ - "name": "r1", - "type": "record1" - } - ] - },{ - "name": "remove_record1", - "base": "", - "fields": [{ - "name": "key", - "type": "uint64" - } - ] - },{ - "name": "record2", - "base": "", - "fields": [{ - "name": "key1", - "type": "uint128" - },{ - "name": "key2", - "type": "uint128" - } - ] - },{ - "name": "insert_record2", - "base": "", - "fields": [{ - "name": "r2", - "type": "record2" - } - ] - },{ - "name": "remove_record2", - "base": "", - "fields": [{ - "name": "key", - "type": "record2" - } - ] - },{ - "name": "record3", - "base": "", - "fields": [{ - "name": "key1", - "type": "uint64" - },{ - "name": "key2", - "type": "uint64" - },{ - "name": "key3", - "type": "uint64" - } - ] - },{ - "name": "insert_record3", - "base": "", - "fields": [{ - "name": "r3", - "type": "record3" - } - ] - },{ - "name": "remove_record3", - "base": "", - "fields": [{ - "name": "key", - "type": "record3" - } - ] - },{ - "name": "key_value1", - "base": "", - "fields": [{ - "name": "key", - "type": "string" - },{ - "name": "value", - "type": "string" - } - ] - },{ - "name": "insert_keyvalue1", - "base": "", - "fields": [{ - "name": "kv1", - "type": "key_value1" - } - ] - },{ - "name": "remove_keyvalue1", - "base": "", - "fields": [{ - "name": "key", - "type": "string" - } - ] - },{ - "name": "complex_type", - "base": "", - "fields": [{ - "name": "name", - "type": "string" - },{ - "name": "age", - "type": "uint64" - } - ] - },{ - "name": "key_value2", - "base": "", - "fields": [{ - "name": "key", - "type": "string" - },{ - "name": "value", - "type": "complex_type" - } - ] - },{ - "name": "insert_keyvalue2", - "base": "", - "fields": [{ - "name": "kv2", - "type": "key_value2" - } - ] - },{ - "name": "remove_keyvalue2", - "base": "", - "fields": [{ - "name": "key", - "type": "string" - } - ] - } - ], - "actions": [{ - "name": "insert1", - "type": "insert_record1" - },{ - "name": "remove1", - "type": "remove_record1" - },{ - "name": "insert2", - "type": "insert_record2" - },{ - "name": "remove2", - "type": "remove_record2" - },{ - "name": "insert3", - "type": "insert_record3" - },{ - "name": "remove3", - "type": "remove_record3" - },{ - "name": "insertkv1", - "type": "insert_keyvalue1" - },{ - "name": "removekv1", - "type": "remove_keyvalue1" - },{ - "name": "insertkv2", - "type": "insert_keyvalue2" - },{ - "name": "removekv2", - "type": "remove_keyvalue2" - } - ], - "tables": [{ - "name": "record1", - "index_type": "i64", - "key_names": [ - "key" - ], - "key_types": [ - "uint64" - ], - "type": "record1" - },{ - "name": "record2", - "index_type": "i128i128", - "key_names": [ - "key1", - "key2" - ], - "key_types": [ - "uint128", - "uint128" - ], - "type": "record2" - },{ - "name": "record3", - "index_type": "i64i64i64", - "key_names": [ - "key1", - "key2", - "key3" - ], - "key_types": [ - "uint64", - "uint64", - "uint64" - ], - "type": "record3" - },{ - "name": "keyvalue1", - "index_type": "str", - "key_names": [ - "key" - ], - "key_types": [ - "string" - ], - "type": "key_value1" - },{ - "name": "keyvalue2", - "index_type": "str", - "key_names": [ - "key" - ], - "key_types": [ - "string" - ], - "type": "key_value2" - } - ] -} \ No newline at end of file diff --git a/contracts/simpledb/simpledb.cpp b/contracts/simpledb/simpledb.cpp deleted file mode 100644 index d1f237d66c639ba30022aa568e3ced2b4ec029b1..0000000000000000000000000000000000000000 --- a/contracts/simpledb/simpledb.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -#include -#include -#include -#include -#include -#include - -using namespace eosio; - -namespace simpledb { - - template - struct dispatchable { - constexpr static uint64_t action_name = Val; - }; - - //@abi table - struct record1 { - - uint64_t key; - - //uint256 u256; - uint128_t u128; - uint64_t u64; - uint32_t u32; - uint16_t u16; - uint8_t u8; - - int64_t i64; - int32_t i32; - int16_t i16; - int8_t i8; - - EOSLIB_SERIALIZE( record1, (key)(u128)(u64)(u32)(u16)(u8)(i64)(i32)(i16)(i8) ) - }; - - //@abi action insert1 - struct insert_record1 : dispatchable { - record1 r1; - void process() { - bytes b = eosio::pack(r1); - store_i64( N(simpledb), N(record1), N(simpledb), b.data(), b.size()); - } - - EOSLIB_SERIALIZE( insert_record1, (r1) ) - }; - - //@abi action remove1 - struct remove_record1 : dispatchable { - uint64_t key; - void process() { - remove_i64( N(simpledb), N(record1), (char *)this); - } - - EOSLIB_SERIALIZE( remove_record1, (key) ) - }; - - //@abi table - struct record2 { - uint128_t key1; - uint128_t key2; - - EOSLIB_SERIALIZE( record2, (key1)(key2) ) - }; - - //@abi action insert2 - struct insert_record2 : dispatchable { - record2 r2; - void process() { - bytes b = eosio::pack(r2); - store_i128i128( N(simpledb), N(record2), N(simpledb), b.data(), b.size()); - } - - EOSLIB_SERIALIZE( insert_record2, (r2) ) - }; - - //@abi action remove2 - struct remove_record2 : dispatchable { - record2 key; - void process() { - bytes b = eosio::pack(key); - remove_i128i128( N(simpledb), N(record2), b.data()); - } - - EOSLIB_SERIALIZE( remove_record2, (key) ) - }; - - //@abi table - struct record3 { - uint64_t key1; - uint64_t key2; - uint64_t key3; - - EOSLIB_SERIALIZE( record3, (key1)(key2)(key3) ) - }; - - //@abi action insert3 - struct insert_record3 : dispatchable { - record3 r3; - void process() { - bytes b = eosio::pack(r3); - store_i128i128( N(simpledb), N(record3), N(simpledb), b.data(), b.size()); - } - - EOSLIB_SERIALIZE( insert_record3, (r3) ) - }; - - //@abi action remove3 - struct remove_record3 : dispatchable { - record3 key; - void process() { - bytes b = eosio::pack(key); - remove_i64i64i64( N(simpledb), N(record2), b.data()); - } - - EOSLIB_SERIALIZE( remove_record3, (key) ) - }; - - //@abi table - struct key_value1 { - std::string key; - std::string value; - - EOSLIB_SERIALIZE( key_value1, (key)(value) ) - }; - - //@abi action insertkv1 - struct insert_keyvalue1 : dispatchable { - key_value1 kv1; - void process() { - eosio_assert(false, "not implemented"); - // bytes b = eosio::pack(kv1.value); - // store_str( N(simpledb), N(keyvalue1), N(simpledb), (char *)kv1.key.data(), kv1.key.size(), b.data(), b.size()); - } - - EOSLIB_SERIALIZE( insert_keyvalue1, (kv1) ) - }; - - //@abi action removekv1 - struct remove_keyvalue1 : dispatchable { - std::string key; - void process() { - eosio_assert(false, "not implemented"); - //remove_str( N(simpledb), N(keyvalue1), (char *)key.data(), key.size() ); - } - - EOSLIB_SERIALIZE( remove_keyvalue1, (key) ) - }; - - struct complex_type { - std::string name; - uint64_t age; - - EOSLIB_SERIALIZE( complex_type, (name)(age) ) - }; - - //@abi table - struct key_value2 { - std::string key; - complex_type value; - - EOSLIB_SERIALIZE( key_value2, (key)(value) ) - }; - - //@abi action insertkv2 - struct insert_keyvalue2 : dispatchable { - key_value2 kv2; - void process() { - eosio_assert(false, "not implemented"); - // bytes b = eosio::pack(kv2.value); - // store_str( N(simpledb), N(keyvalue2), N(simpledb), (char *)kv2.key.data(), kv2.key.size(), b.data(), b.size()); - } - - EOSLIB_SERIALIZE( insert_keyvalue2, (kv2) ) - }; - - //@abi action removekv2 - struct remove_keyvalue2 : dispatchable { - std::string key; - void process() { - remove_str( N(simpledb), N(keyvalue2), (char *)key.data(), key.size() ); - } - - EOSLIB_SERIALIZE( remove_keyvalue2, (key) ) - }; - - template - struct dispatcher_impl; - - template - struct dispatcher_impl { - static bool dispatch(uint64_t action) { - if (action == T::action_name) { - unpack_action_data().process(); - return true; - } - - return false; - } - }; - - template - struct dispatcher_impl { - static bool dispatch(uint64_t action) { - return dispatcher_impl::dispatch(action) || dispatcher_impl::dispatch(action); - } - }; - - using dispatcher = dispatcher_impl; -} - -extern "C" { - - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t code, uint64_t act ) { - if (code == current_receiver()) { - auto action_processed = simpledb::dispatcher::dispatch(act); - eosio_assert(action_processed, "unknown action"); - } - } - -} diff --git a/contracts/skeleton/skeleton.hpp b/contracts/skeleton/skeleton.hpp index ffc8992f3c5208fcdf77d531bd1ca9466dcee3f5..ec28c3d168b8bc5da7a64a69e31b5c6268940b91 100644 --- a/contracts/skeleton/skeleton.hpp +++ b/contracts/skeleton/skeleton.hpp @@ -3,6 +3,5 @@ * @copyright defined in eos/LICENSE.txt */ #include -#include diff --git a/contracts/storage/CMakeLists.txt b/contracts/storage/CMakeLists.txt deleted file mode 100644 index 5b724b13ce215deb0b1bf7c12b7b4dd56abf3acd..0000000000000000000000000000000000000000 --- a/contracts/storage/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET storage - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - diff --git a/contracts/storage/storage.abi b/contracts/storage/storage.abi deleted file mode 100644 index ac4888c478ea7456e625b90821ceab90bc4e6f69..0000000000000000000000000000000000000000 --- a/contracts/storage/storage.abi +++ /dev/null @@ -1,69 +0,0 @@ -{ - "types": [{ - "new_type_name": "account_name", - "type": "name" - } - ], - "structs": [{ - "name": "transfer", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"to", "type":"account_name"}, - {"name":"amount", "type":"uint64"} - ] - },{ - "name": "account", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"tokbalance", "type":"uint64"}, - {"name":"quotausage", "type":"uint64"} - ] - },{ - "name": "link", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"}, - {"name":"eospath", "type":"string"}, - {"name":"ipfspath", "type":"string"}, - {"name":"size" , "type":"uint32"}, - {"name":"store", "type":"uint8"}, - {"name":"accept", "type":"uint8"}, - {"name":"stake", "type":"uint64"}, - {"name":"producer", "type":"account_name"} - ] - } - ], - "actions": [{ - "name": "transfer", - "type": "transfer" - },{ - "name": "setlink", - "type": "link" - },{ - "name": "removelink", - "type": "string" - },{ - "name": "acceptstore", - "type": "string" - },{ - "name": "rejectstore", - "type": "string" - } - ], - "tables": [{ - "name": "account", - "type": "account", - "index_type": "i64", - "key_names" : ["account"], - "key_types" : ["account_name"] - },{ - "name": "links", - "type" : "link", - "index_type": "str", - "key_names" : ["eospath"], - "key_types" : ["string"] - } - ] -} diff --git a/contracts/storage/storage.cpp b/contracts/storage/storage.cpp deleted file mode 100644 index c0e5d9cf9fc4b65dbf89afa7db14d7bff24af19c..0000000000000000000000000000000000000000 --- a/contracts/storage/storage.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -#include "storage.hpp" - -namespace TOKEN_NAME { - void store_account( account_name name, const account& account_to_store ) { - if ( account_to_store.is_empty() ) { - accounts::remove( account_to_store, name ); - } else { - accounts::store(account_to_store, name ); - } - } - - void apply_storage_transfer( const TOKEN_NAME::transfer& transfer_storage ) { - eosio::require_recipient( transfer_storage.to, transfer_storage.from ); - eosio::require_auth( transfer_storage.from ); - - account from = get_account( transfer_storage.from ); - account to = get_account( transfer_storage.to ); - - from.balance -= transfer_storage.quantity; /// token subtraction has underflow assertion - to.balance += transfer_storage.quantity; /// token addition has overflow assertion - - store_account( transfer_storage.from, from ); - store_account( transfer_storage.to, to ); - } - - bool validate_ipfspath( const char* ipfspath, uint32_t len ) { - // To be implemented - return true; - } - - bool validate_eospath( const char* eospath, uint32_t len ) { - // To be implemented - return true; - } - - uint32_t read_link_from_buffer( const char* buffer, uint32_t bufferlen, - TOKEN_NAME::link& link_to_read, uint32_t& eospathlen, uint32_t ipfspathlen ) { - // To be implemented - return 0; - } - - void apply_storage_setlink() { - TOKEN_NAME::link link_to_set; - uint32_t eospathlen; - uint32_t ipfspathlen; - char tmp[4098]; - auto bufferlen = read_action(tmp, 4098); - auto linklen = read_link_from_buffer( tmp, bufferlen, link_to_set, eospathlen, ipfspathlen ); - eosio::require_recipient( link_to_set.owner ); - eosio::require_auth( link_to_set.owner ); - validate_ipfspath( link_to_set.ipfspath, ipfspathlen ); - validate_eospath( link_to_set.eospath, eospathlen ); - ::store_str( current_receiver(), N(storage), link_to_set.eospath, eospathlen, (char*)&link_to_set, linklen ); - } - - void apply_storage_removelink( char* eospath, uint32_t eospathlen ) { - char tmp[4098]; - auto len = ::load_str( current_receiver(), current_receiver(), N(storage), eospath, eospathlen, tmp, 4098 ); - TOKEN_NAME::link link_to_remove; - uint32_t ipfspathlen; - len = read_link_from_buffer( tmp, len, link_to_remove, eospathlen, ipfspathlen ); - eosio::require_auth( link_to_remove.owner ); - uint32_t stake = link_to_remove.stake; - ::remove_str( current_receiver(), N(storage), link_to_remove.eospath, eospathlen ); - // Reduce Quota usage in account table - // How does producer know to free cached file? - } - - void apply_storage_createstore( char* eospath, uint32_t eospathlen ) { - char tmp[4098]; - auto len = ::load_str( current_receiver(), current_receiver(), N(storage), eospath, eospathlen, tmp, 4098 ); - TOKEN_NAME::link link_to_create; - uint32_t ipfspathlen; - len = read_link_from_buffer( tmp, len, link_to_create, eospathlen, ipfspathlen ); - - // eosio::require_auth( producer ) - // How do we validate the require_auth() is a producer? - // logic goes here to reduce number of tokens and increase quote used using bancor algorithm - link_to_create.accept = 1; - ::store_str( current_receiver(), N(storage), link_to_create.eospath, eospathlen, (char*)&link_to_create, len ); - } - - void apply_storage_rejectstore( char* eospath, uint32_t eospathlen ) { - char tmp[4098]; - auto len = ::load_str( current_receiver(), current_receiver(), N(storage), eospath, eospathlen, tmp, 4098 ); - TOKEN_NAME::link link_to_reject; - uint32_t ipfspathlen; - len = read_link_from_buffer( tmp, len, link_to_reject, eospathlen, ipfspathlen ); - // eosio::require_auth( producer ) - // How do we validate the require_auth() is a producer? - link_to_reject.accept = 0; - ::store_str( current_receiver(), N(storage), link_to_reject.eospath, eospathlen, (char*)&link_to_reject, len ); - } -} // namespace TOKEN_NAME - -using namespace TOKEN_NAME; - -extern "C" { - - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t code, uint64_t action ) { - if( code == N(storage) ) { - if( action == N(transfer) ) { - TOKEN_NAME::apply_storage_transfer( eosio::current_action< TOKEN_NAME::transfer >() ); - } else if (action == N(setlink) ) { - TOKEN_NAME::apply_storage_setlink(); - } else if (action == N(removelink) ) { - char tmp[1025]; - auto len = read_action( tmp, 1025 ); - TOKEN_NAME::apply_storage_removelink( tmp, len ); - } else if (action == N(acceptstore) ) { - char tmp[1025]; - auto len = read_action( tmp, 1025 ); - TOKEN_NAME::apply_storage_createstore( tmp, len ); - } else if (action == N(rejectstore) ) { - char tmp[1025]; - auto len = read_action( tmp, 1025 ); - TOKEN_NAME::apply_storage_rejectstore( tmp, len ); - } else { - eosio_assert(0, "unknown message"); - } - } else { - eosio_assert(0, "unknown code"); - } - } -} diff --git a/contracts/storage/storage.hpp b/contracts/storage/storage.hpp deleted file mode 100644 index 6965d2399dfc8cad02d27c74c73318c072963708..0000000000000000000000000000000000000000 --- a/contracts/storage/storage.hpp +++ /dev/null @@ -1,174 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -#include -#include -#include - -/** - * @defgroup examplecontract Example Storage - * @brief Example Contract - * @ingroup contractapi - * - */ - -/** - * Make it easy to change the account name the storage is deployed to. - */ -#ifndef TOKEN_NAME -#define TOKEN_NAME TOK -#endif - -namespace TOKEN_NAME { - - /** - * @defgroup storageapi Storage Contract - * @brief Defines the storage contract example - * @ingroup examplecontract - * - * @{ - */ - - /** - * Defines a storage token - */ - typedef eosio::token storage_tokens; - - /** - * transfer requires that the sender and receiver be the first two - * accounts notified and that the sender has provided authorization. - */ - - struct transfer { - /** - * account to transfer from - */ - account_name from; - - /** - * account to transfer to - */ - account_name to; - - /** - * quantity to transfer - */ - storage_tokens quantity; - }; - - /** - * @brief row in account table stored within each scope - */ - struct PACKED(account) { - /** - Constructor with default zero quantity (balance). - */ - account( storage_tokens b = storage_tokens() ):balance(b),quotaused(0){} - - /** - * The key is constant because there is only one record per scope/currency/accounts - */ - const uint64_t key = N(account); - - /** - * Balance number of tokens in account - **/ - storage_tokens balance; - - /** - * Quota of storage Used - **/ - uint64_t quotaused; - /** - Method to check if accoutn is empty. - @return true if account balance is zero and there is quota used. - **/ - bool is_empty()const { return balance.quantity == 0 && quotaused == 0; } - }; - - /** - Assert statement to verify structure packing for account - **/ - static_assert( sizeof(account) == sizeof(uint64_t)+sizeof(storage_tokens)+sizeof(uint64_t), "unexpected packing" ); - - /** - Defines the database table for account information - **/ - using accounts = eosio::table; - - /** - * accounts information for owner is stored: - * - * owner/TOKEN_NAME/account/account -> account - * - * This API is made available for 3rd parties wanting read access to - * the users balance. If the account doesn't exist a default constructed - * account will be returned. - * @param owner The account owner - * @return account instance - */ - inline account get_account( account_name owner ) { - account owned_account; - accounts::get( owned_account, owner ); - return owned_account; - } - - /** - * This API is made available for 3rd parties wanting read access to - * the users quota of storage used. IF the account doesn't exist a default - * constructed account will be returned. - * @param owner The account owner - * @return uint64_t quota used - */ - inline uint64_t get_quota_used( account_name owner ) { - account owned_account; - accounts::get( owned_account, owner ); - return owned_account.quotaused; - } - - /** - Used to set a link to a file - **/ - struct PACKED( link ) { - /** - * account owner - **/ - account_name owner; - - /** - * eos path - **/ - char* eospath; - - /** - * ipfs file path - **/ - char* ipfspath; - - /** - * size of file - **/ - uint32_t size; - - /** - * a flag that signals producers to cache file - **/ - uint8_t store; - - /** - * a flag that signals producers have accepted storage and cached file - **/ - uint8_t accept; - - /** - * tokens staked per file - **/ - uint64_t stake; - - /** - * name of producer who cached file - **/ - account_name producer; - }; -} /// @} /// storageapi diff --git a/contracts/test_api/test_api.cpp b/contracts/test_api/test_api.cpp index 603368ba46caabfd63e1cb7b822e67821309def5..844f014a14674246e97f15e99ba38edbd0a9ef4f 100644 --- a/contracts/test_api/test_api.cpp +++ b/contracts/test_api/test_api.cpp @@ -145,7 +145,15 @@ extern "C" { // test checktime WASM_TEST_HANDLER(test_checktime, checktime_pass); WASM_TEST_HANDLER(test_checktime, checktime_failure); - +/* + // test softfloat + WASM_TEST_HANDLER(test_softfloat, test_f32_add); + WASM_TEST_HANDLER(test_softfloat, test_f32_sub); + WASM_TEST_HANDLER(test_softfloat, test_f32_mul); + WASM_TEST_HANDLER(test_softfloat, test_f32_div); + WASM_TEST_HANDLER(test_softfloat, test_f32_min); +*/ + //unhandled test call eosio_assert(false, "Unknown Test"); diff --git a/contracts/test_api/test_api.hpp b/contracts/test_api/test_api.hpp index 4098a9edd23250397c88efc0940377be01fe2f8b..578ba8f3c05670a364e59df89b2ed65e7aa82fe5 100644 --- a/contracts/test_api/test_api.hpp +++ b/contracts/test_api/test_api.hpp @@ -125,7 +125,6 @@ struct test_db { static void key_i128i128_general(); static void key_i64i64i64_general(); - static void key_str_general(); static void key_str_table(); static void key_str_setup_limit(); @@ -173,6 +172,22 @@ struct test_multi_index { static void idx128_autoincrement_test_part2(); static void idx256_general(); static void idx_double_general(); + static void idx64_pk_iterator_exceed_end(); + static void idx64_sk_iterator_exceed_end(); + static void idx64_pk_iterator_exceed_begin(); + static void idx64_sk_iterator_exceed_begin(); + static void idx64_pass_pk_ref_to_other_table(); + static void idx64_pass_sk_ref_to_other_table(); + static void idx64_pass_pk_end_itr_to_iterator_to(); + static void idx64_pass_pk_end_itr_to_modify(); + static void idx64_pass_pk_end_itr_to_erase(); + static void idx64_pass_sk_end_itr_to_iterator_to(); + static void idx64_pass_sk_end_itr_to_modify(); + static void idx64_pass_sk_end_itr_to_erase(); + static void idx64_modify_primary_key(); + static void idx64_run_out_of_avl_pk(); + static void idx64_sk_cache_pk_lookup(); + static void idx64_pk_cache_sk_lookup(); }; struct test_crypto { @@ -275,3 +290,12 @@ struct test_checktime { static void checktime_pass(); static void checktime_failure(); }; +/* +struct test_softfloat { + static void test_f32_add(); + static void test_f32_sub(); + static void test_f32_mul(); + static void test_f32_div(); + static void test_f32_min(); +}; +*/ diff --git a/contracts/test_api/test_real.cpp b/contracts/test_api/test_real.cpp index fcb54698b025c175861502994e33df81e0119857..d208f0b43acf30d403df4e570640802e5af56cd9 100644 --- a/contracts/test_api/test_real.cpp +++ b/contracts/test_api/test_real.cpp @@ -3,26 +3,24 @@ #include "test_api.hpp" -using namespace eosio; - void test_real::create_instances() { - real lhs1(5); + eosio::real lhs1(5); eosio_assert(lhs1.value() == 5, "real instance value is wrong"); } void test_real::test_division() { - real lhs1(5); - real rhs1(10); - real result1 = lhs1 / rhs1; + eosio::real lhs1(5); + eosio::real rhs1(10); + eosio::real result1 = lhs1 / rhs1; uint64_t a = double_div(i64_to_double(5), i64_to_double(10)); eosio_assert(a == result1.value(), "real division result is wrong"); } void test_real::test_division_by_0() { - real lhs1(5); - real rhs1(0); - real result1 = lhs1 / rhs1; + eosio::real lhs1(5); + eosio::real rhs1(0); + eosio::real result1 = lhs1 / rhs1; // in order to get rid of unused parameter warning result1 = 0; @@ -30,27 +28,27 @@ void test_real::test_division_by_0() { } void test_real::test_multiplication() { - real lhs1(5); - real rhs1(10); - real result1 = lhs1 * rhs1; + eosio::real lhs1(5); + eosio::real rhs1(10); + eosio::real result1 = lhs1 * rhs1; uint64_t res = double_mult( 5, 10 ); eosio_assert(res == result1.value(), "real multiplication result is wrong"); } void test_real::test_addition() { - real lhs1(5); - real rhs1(10); - real result1 = lhs1 / rhs1; + eosio::real lhs1(5); + eosio::real rhs1(10); + eosio::real result1 = lhs1 / rhs1; uint64_t a = double_div(i64_to_double(5), i64_to_double(10)); - real lhs2(5); - real rhs2(2); - real result2 = lhs2 / rhs2; + eosio::real lhs2(5); + eosio::real rhs2(2); + eosio::real result2 = lhs2 / rhs2; uint64_t b = double_div(i64_to_double(5), i64_to_double(2)); - real sum = result1+result2; + eosio::real sum = result1+result2; uint64_t c = double_add( a, b ); eosio_assert(sum.value() == c, "real addition operation result is wrong"); } diff --git a/contracts/test_api/test_transaction.cpp b/contracts/test_api/test_transaction.cpp index 1bf807ff3957a72810d03a98a3c9744f01bcdfa7..d1967b1644551cc5ce55b47004810add8992e679 100644 --- a/contracts/test_api/test_transaction.cpp +++ b/contracts/test_api/test_transaction.cpp @@ -73,12 +73,14 @@ void copy_data(char* data, size_t data_len, eosio::vector& data_out) { } void test_transaction::send_action() { + using namespace eosio; test_dummy_action test_action = {DUMMY_ACTION_DEFAULT_A, DUMMY_ACTION_DEFAULT_B, DUMMY_ACTION_DEFAULT_C}; action act(eosio::vector{{N(testapi), N(active)}}, test_action); act.send(); } void test_transaction::send_action_empty() { + using namespace eosio; test_action_action test_action; action act(eosio::vector{{N(testapi), N(active)}}, test_action); @@ -90,6 +92,7 @@ void test_transaction::send_action_empty() { * cause failure due to a large action payload */ void test_transaction::send_action_large() { + using namespace eosio; char large_message[8 * 1024]; test_action_action test_action; copy_data(large_message, 8*1024, test_action.data); @@ -102,6 +105,7 @@ void test_transaction::send_action_large() { * cause failure due recursive loop */ void test_transaction::send_action_recurse() { + using namespace eosio; char buffer[1024]; read_action_data(buffer, 1024); @@ -116,6 +120,7 @@ void test_transaction::send_action_recurse() { * cause failure due to inline TX failure */ void test_transaction::send_action_inline_fail() { + using namespace eosio; test_action_action test_action; action act(vector{{N(testapi), N(active)}}, test_action); @@ -124,12 +129,14 @@ void test_transaction::send_action_inline_fail() { } void test_transaction::test_tapos_block_prefix() { + using namespace eosio; int tbp; read_action_data( (char*)&tbp, sizeof(int) ); eosio_assert( tbp == tapos_block_prefix(), "tapos_block_prefix does not match" ); } void test_transaction::test_tapos_block_num() { + using namespace eosio; int tbn; read_action_data( (char*)&tbn, sizeof(int) ); eosio_assert( tbn == tapos_block_num(), "tapos_block_num does not match" ); @@ -137,6 +144,7 @@ void test_transaction::test_tapos_block_num() { void test_transaction::test_read_transaction() { + using namespace eosio; checksum256 h; transaction t; char* p = (char*)&t; @@ -146,12 +154,14 @@ void test_transaction::test_read_transaction() { } void test_transaction::test_transaction_size() { + using namespace eosio; uint32_t trans_size = 0; read_action_data( (char*)&trans_size, sizeof(uint32_t) ); eosio_assert( trans_size == transaction_size(), "transaction size does not match" ); } void test_transaction::send_transaction() { + using namespace eosio; dummy_action payload = {DUMMY_ACTION_DEFAULT_A, DUMMY_ACTION_DEFAULT_B, DUMMY_ACTION_DEFAULT_C}; test_action_action test_action; @@ -163,6 +173,7 @@ void test_transaction::send_transaction() { } void test_transaction::send_action_sender() { + using namespace eosio; account_name cur_send; read_action_data( &cur_send, sizeof(account_name) ); test_action_action test_action; @@ -174,6 +185,7 @@ void test_transaction::send_action_sender() { } void test_transaction::send_transaction_empty() { + using namespace eosio; auto trx = transaction(); trx.send(0); @@ -184,6 +196,7 @@ void test_transaction::send_transaction_empty() { * cause failure due to a large transaction size */ void test_transaction::send_transaction_large() { + using namespace eosio; auto trx = transaction(); for (int i = 0; i < 32; i ++) { char large_message[1024]; diff --git a/contracts/test_api_db/test_api_db.cpp b/contracts/test_api_db/test_api_db.cpp index be7e8d898257653a20b9ac572d25fcca8414dfa9..bfe68504749891b7a051333d59a485d16114e088 100644 --- a/contracts/test_api_db/test_api_db.cpp +++ b/contracts/test_api_db/test_api_db.cpp @@ -13,7 +13,7 @@ extern "C" { } - void apply( unsigned long long code, unsigned long long action ) { + void apply( unsigned long long, unsigned long long action ) { WASM_TEST_HANDLER(test_db, primary_i64_general); WASM_TEST_HANDLER(test_db, primary_i64_lowerbound); @@ -22,8 +22,6 @@ extern "C" { WASM_TEST_HANDLER(test_db, idx64_lowerbound); WASM_TEST_HANDLER(test_db, idx64_upperbound); - WASM_TEST_HANDLER(test_db, key_str_general); - //unhandled test call eosio_assert(false, "Unknown Test"); } diff --git a/contracts/test_api_db/test_db.cpp b/contracts/test_api_db/test_db.cpp index 62f72d64b598b0f9b00af7da3ff29042ce851af8..f9b544b99823cc52cca5baf8c99eaa765195b3f2 100644 --- a/contracts/test_api_db/test_db.cpp +++ b/contracts/test_api_db/test_db.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include "../test_api/test_api.hpp" @@ -81,1424 +80,6 @@ extern "C" { } } -#if 0 -void test_db::key_str_table() { - - const char* keys[] = { "alice", "bob", "carol", "dave" }; - const char* vals[] = { "data1", "data2", "data3", "data4" }; - - const char* atr[] = { "atr", "atr", "atr", "atr" }; - const char* ztr[] = { "ztr", "ztr", "ztr", "ztr" }; - - eosio::var_table StringTableAtr; - eosio::var_table StringTableZtr; - eosio::var_table StringTableStr; - - uint32_t res = 0; - - // fill some data in contiguous tables - for( int ii = 0; ii < 4; ++ii ) { - res = StringTableAtr.store( (char*)keys[ii], STRLEN(keys[ii]), (char*)atr[ii], STRLEN(atr[ii]) ); - eosio_assert( res != 0, "atr" ); - - res = StringTableZtr.store( (char*)keys[ii], STRLEN(keys[ii]), (char*)ztr[ii], STRLEN(ztr[ii]) ); - eosio_assert(res != 0, "ztr" ); - } - - char tmp[64]; - - res = StringTableStr.store ((char *)keys[0], STRLEN(keys[0]), (char *)vals[0], STRLEN(vals[0])); - eosio_assert(res != 0, "store alice" ); - - res = StringTableStr.store((char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) ); - eosio_assert(res != 0, "store bob" ); - - res = StringTableStr.store((char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) ); - eosio_assert(res != 0, "store carol" ); - - res = StringTableStr.store((char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) ); - eosio_assert(res != 0, "store dave" ); - - res = StringTableStr.load((char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "load alice"); - - res = StringTableStr.load((char *)keys[1], STRLEN(keys[1]), tmp, 64); - eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "load bob"); - - res = StringTableStr.load((char *)keys[2], STRLEN(keys[2]), tmp, 64); - eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "load carol"); - - res = StringTableStr.load((char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "load dave"); - - res = StringTableStr.previous((char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "back carol"); - - res = StringTableStr.previous((char *)keys[2], STRLEN(keys[2]), tmp, 64); - eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "back dave"); - - res = StringTableStr.previous((char *)keys[1], STRLEN(keys[1]), tmp, 64); - eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "back alice"); - - res = StringTableStr.previous((char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == -1, "no prev"); - - res = StringTableStr.next((char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "next bob"); - - res = StringTableStr.next((char *)keys[1], STRLEN(keys[1]), tmp, 64); - eosio_assert(res == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, res), "next carol"); - - res = StringTableStr.next((char *)keys[2], STRLEN(keys[2]), tmp, 64); - eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "next dave"); - - res = StringTableStr.next((char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(res == -1, "no next"); - - res = StringTableStr.next((char *)keys[0], STRLEN(keys[0]), tmp, 0); - eosio_assert(res == 0, "next 0"); - - res = StringTableStr.front((char*)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "front alice"); - - res = StringTableStr.back((char*)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "back dave"); - - res = StringTableStr.lower_bound((char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, res), "lowerbound alice"); - - res = StringTableStr.upper_bound((char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, res), "upperbound bob"); - - res = StringTableStr.lower_bound((char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(res == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, res), "upperbound dave"); - - res = StringTableStr.upper_bound((char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(res == -1, "no upper_bound"); - -} -#endif - -void test_db::key_str_general() { - - const char* keys[] = { "alice", "bob", "carol", "dave" }; - const char* vals[] = { "data1", "data2", "data3", "data4" }; - - const char* atr[] = { "atr", "atr", "atr", "atr" }; - const char* ztr[] = { "ztr", "ztr", "ztr", "ztr" }; - - int32_t res=0; - - //fill some data in contiguous tables - for(int i=0; i < 4; ++i) { - res = store_str(current_receiver(), N(atr), N(testapi), (char *)keys[i], STRLEN(keys[i]), (char *)atr[i], STRLEN(atr[i]) ); - eosio_assert(res != 0, "atr" ); - - res = store_str(current_receiver(), N(ztr), N(testapi), (char *)keys[i], STRLEN(keys[i]), (char *)ztr[i], STRLEN(ztr[i]) ); - eosio_assert(res != 0, "ztr" ); - } - - char tmp[64]; - - res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[0], STRLEN(keys[0]), (char *)vals[0], STRLEN(vals[0]) ); - eosio_assert(res != 0, "store alice" ); - - res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[1], STRLEN(keys[1]), (char *)vals[1], STRLEN(vals[1]) ); - eosio_assert(res != 0, "store bob" ); - - res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[2], STRLEN(keys[2]), (char *)vals[2], STRLEN(vals[2]) ); - eosio_assert(res != 0, "store carol" ); - - res = store_str(current_receiver(), N(str), N(testapi), (char *)keys[3], STRLEN(keys[3]), (char *)vals[3], STRLEN(vals[3]) ); - eosio_assert(res != 0, "store dave" ); - - - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, uint32_t(res)), "load alice"); - - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, uint32_t(res)), "load bob"); - - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, uint32_t(res)), "load carol"); - - res = load_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, uint32_t(res)), "load dave"); - - res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, uint32_t(res)), "back carol"); - - res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, uint32_t(res)), "back dave"); - - res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, uint32_t(res)), "back alice"); - - res = previous_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(res == 0, "no prev"); - - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, uint32_t(res)), "next bob"); - - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[1], STRLEN(keys[1]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[2]) && my_memcmp((void *)vals[2], (void *)tmp, uint32_t(res)), "next carol"); - - res = next_str(current_receiver(), current_receiver(), N(str), (char *)keys[2], STRLEN(keys[2]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, uint32_t(res)), "next dave"); - - res = lower_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[0]) && my_memcmp((void *)vals[0], (void *)tmp, uint32_t(res)), "lowerbound alice"); - - res = upper_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[0], STRLEN(keys[0]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[1]) && my_memcmp((void *)vals[1], (void *)tmp, uint32_t(res)), "upperbound bob"); - - res = lower_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(uint32_t(res) == STRLEN(vals[3]) && my_memcmp((void *)vals[3], (void *)tmp, uint32_t(res)), "upperbound dave"); - - res = upper_bound_str(current_receiver(), current_receiver(), N(str), (char *)keys[3], STRLEN(keys[3]), tmp, 64); - eosio_assert(res == 0, "no upper_bound"); - - res = update_str(current_receiver(), N(str), N(testapi), (char *)keys[3], STRLEN(keys[3]), (char *)vals[2], STRLEN(vals[2]) ); - eosio_assert(res != 0, "store dave" ); - - res = load_str(current_receiver(), current_receiver(), N(str), (char*)keys[3], STRLEN(keys[3]), tmp, 64 ); - eosio_assert(uint32_t(res) == STRLEN(vals[2]) && my_memcmp((void*)vals[2], (void*)tmp, uint32_t(res)), "load updated carol" ); -} - -#if 0 -void test_db::key_i64_general() { - - uint32_t res = 0; - test_model alice{ N(alice), 20, 4234622}; - test_model bob { N(bob), 15, 11932435}; - test_model carol{ N(carol), 30, 545342453}; - test_model dave { N(dave), 46, 6535354}; - - res = store_i64(current_receiver(), N(test_table), &dave, sizeof(test_model)); - eosio_assert(res != 0, "store dave" ); - - res = store_i64(current_receiver(), N(test_table), &carol, sizeof(test_model)); - eosio_assert(res != 0, "store carol" ); - - res = store_i64(current_receiver(), N(test_table), &bob, sizeof(test_model)); - eosio_assert(res != 0, "store bob" ); - - res = store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model)); - eosio_assert(res != 0, "store alice" ); - - //fill with different ages in adjacent tables - dave.age=123; store_i64(current_receiver(), N(test_tabld), &dave, sizeof(test_model)); - dave.age=124; store_i64(current_receiver(), N(test_tablf), &dave, sizeof(test_model)); - carol.age=125; store_i64(current_receiver(), N(test_tabld), &carol, sizeof(test_model)); - carol.age=126; store_i64(current_receiver(), N(test_tablf), &carol, sizeof(test_model)); - bob.age=127; store_i64(current_receiver(), N(test_tabld), &bob, sizeof(test_model)); - bob.age=128; store_i64(current_receiver(), N(test_tablf), &bob, sizeof(test_model)); - alice.age=129; store_i64(current_receiver(), N(test_tabld), &alice, sizeof(test_model)); - alice.age=130; store_i64(current_receiver(), N(test_tablf), &alice, sizeof(test_model)); - - test_model tmp; - - res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "front_i64 1"); - my_memset(&tmp, 0, sizeof(test_model)); - - res = back_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "front_i64 2"); - - res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol previous"); - - res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "bob previous"); - - res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "alice previous"); - - res = previous_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "previous null"); - - res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "bob next"); - - res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "carol next"); - - res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "dave next"); - - res = next_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "next null"); - - my_memset(&alice, 0, sizeof(test_model)); - - eosio_assert(alice.name == 0 && alice.age == 0 && alice.phone == 0, "my_memset"); - - alice.name = N(alice); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &alice, sizeof(test_model)); - eosio_assert(res == sizeof(test_model) && alice.age == 20 && alice.phone == 4234622, "alice error 1"); - - alice.age = 21; - alice.phone = 1234; - - res = store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model)); - eosio_assert(res == 0, "store alice 2" ); - - my_memset(&alice, 0, sizeof(test_model)); - alice.name = N(alice); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &alice, sizeof(test_model)); - eosio_assert(res == sizeof(test_model) && alice.age == 21 && alice.phone == 1234, "alice error 2"); - - my_memset(&bob, 0, sizeof(test_model)); - bob.name = N(bob); - - my_memset(&carol, 0, sizeof(test_model)); - carol.name = N(carol); - - my_memset(&dave, 0, sizeof(test_model)); - dave.name = N(dave); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &bob, sizeof(test_model)); - eosio_assert(res == sizeof(test_model) && bob.age == 15 && bob.phone == 11932435, "bob error 1"); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &carol, sizeof(test_model)); - eosio_assert(res == sizeof(test_model) && carol.age == 30 && carol.phone == 545342453, "carol error 1"); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &dave, sizeof(test_model)); - eosio_assert(res == sizeof(test_model) && dave.age == 46 && dave.phone == 6535354, "dave error 1"); - - res = load_i64(current_receiver(), N(other_code), N(test_table), &alice, sizeof(test_model)); - eosio_assert(res == sizeof(test_model), "other_code"); - - res = load_i64(current_receiver(), current_receiver(), N(other_table), &alice, sizeof(test_model)); - eosio_assert(res == 0, "other_table"); - - - test_model_v2 alicev2; - alicev2.name = N(alice); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &alicev2, sizeof(test_model_v2)); - eosio_assert(res == sizeof(test_model) && alicev2.age == 21 && alicev2.phone == 1234, "alicev2 load"); - - alicev2.new_field = 66655444; - res = store_i64(current_receiver(), N(test_table), &alicev2, sizeof(test_model_v2)); - eosio_assert(res == 0, "store alice 3" ); - - my_memset(&alicev2, 0, sizeof(test_model_v2)); - alicev2.name = N(alice); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &alicev2, sizeof(test_model_v2)); - eosio_assert(res == sizeof(test_model_v2) && alicev2.age == 21 && alicev2.phone == 1234 && alicev2.new_field == 66655444, "alice model v2"); - - my_memset(&tmp, 0, sizeof(test_model)); - tmp.name = N(bob); - res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(bob), "lower_bound_i64 bob" ); - - my_memset(&tmp, 0, sizeof(test_model)); - tmp.name = N(boc); - res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(carol), "lower_bound_i64 carol" ); - - my_memset(&tmp, 0, sizeof(test_model)); - tmp.name = N(dave); - // data packet only big enough for name - res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(uint64_t) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(dave), "lower_bound_i64 dave" ); - - my_memset(&tmp, 0, sizeof(test_model)); - tmp.name = N(davf); - res = lower_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(uint64_t) ); - eosio_assert(res == 0, "lower_bound_i64 fail" ); - - my_memset(&tmp, 0, sizeof(test_model)); - tmp.name = N(alice); - res = upper_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.age == 15 && tmp.name == N(bob), "upper_bound_i64 bob" ); - - my_memset(&tmp, 0, sizeof(test_model)); - tmp.name = N(dave); - res = upper_bound_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "upper_bound_i64 dave" ); - test_model_v3 tmp2; - tmp2.name = N(alice); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - eosio_assert(res == sizeof(test_model_v2) && - tmp2.age == 21 && - tmp2.phone == 1234 && - tmp2.new_field == 66655444, - "load4update"); - - tmp2.another_field = 221122; - res = update_i64(current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - eosio_assert(res == 1, "update_i64"); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - eosio_assert(res == sizeof(test_model_v3) && - tmp2.age == 21 && - tmp2.phone == 1234 && - tmp2.new_field == 66655444 && - tmp2.another_field == 221122, - "load4update"); - - tmp2.age = 11; - res = update_i64(current_receiver(), N(test_table), &tmp2, sizeof(uint64_t)+1 ); - eosio_assert(res == 1, "update_i64 small"); - - res = load_i64(current_receiver(), current_receiver(), N(test_table), &tmp2, sizeof(test_model_v3)); - eosio_assert(res == sizeof(test_model_v3) && - tmp2.age == 11 && - tmp2.phone == 1234 && - tmp2.new_field == 66655444 && - tmp2.another_field == 221122, - "load_i64 update_i64"); - - - //Remove dummy records - uint64_t tables[] { N(test_tabld), N(test_tablf) }; - for(auto& t : tables) { - while( front_i64( current_receiver(), current_receiver(), t, &tmp, sizeof(test_model) ) != 0 ) { - remove_i64(current_receiver(), t, &tmp); - } - } -} - -void test_db::key_i64_remove_all() { - - uint32_t res = 0; - uint64_t key; - - key = N(alice); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 1, "remove alice"); - - key = N(bob); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 1, "remove bob"); - - key = N(carol); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 1, "remove carol"); - - key = N(dave); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 1, "remove dave"); - - test_model tmp; - res = front_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "front_i64 remove"); - - res = back_i64( current_receiver(), current_receiver(), N(test_table), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "back_i64_i64 remove"); - - key = N(alice); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 0, "remove alice 1"); - - key = N(bob); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 0, "remove bob 1"); - - key = N(carol); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 0, "remove carol 1"); - - key = N(dave); - res = remove_i64(current_receiver(), N(test_table), &key); - eosio_assert(res == 0, "remove dave 1"); -} - -void test_db::key_i64_small_load() { - uint64_t dummy = 0; - test_model alice{ N(alice), 20, 4234622}; - // shouldn't throw an error, short circuits out because no table id is found - auto res = load_i64(current_receiver(), current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)-1); - eosio_assert(res == 0, "should have returned 0 on failure"); - store_i64(current_receiver(), N(test_table), &alice, sizeof(test_model)); - load_i64(current_receiver(), current_receiver(), N(test_table), &alice, sizeof(uint64_t)-1); -} - -void test_db::key_i64_small_store() { - uint64_t dummy = 0; - store_i64(current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)-1); -} - -void test_db::key_i64_store_scope() { - uint64_t dummy = 0; - store_i64(current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)); -} - -void test_db::key_i64_remove_scope() { - uint64_t dummy = 0; - store_i64(current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)); -} - -void test_db::key_i64_not_found() { - uint64_t dummy = 1000; - - auto res = load_i64(current_receiver(), current_receiver(), N(just_uint64), &dummy, sizeof(uint64_t)); - eosio_assert(res == 0, "i64_not_found load"); - - res = remove_i64(current_receiver(), N(just_uint64), &dummy); - eosio_assert(res == 0, "i64_not_found remove"); -} - -void test_db::key_i64_front_back() { - - uint32_t res = 0; - - test_model dave { N(dave), 46, 6535354}; - test_model carol{ N(carol), 30, 545342453}; - store_i64(current_receiver(), N(b), &dave, sizeof(test_model)); - store_i64(current_receiver(), N(b), &carol, sizeof(test_model)); - - test_model bob { N(bob), 15, 11932435}; - test_model alice{ N(alice), 20, 4234622}; - store_i64(current_receiver(), N(a), &bob, sizeof(test_model)); - store_i64(current_receiver(), N(a), &alice, sizeof(test_model)); - - test_model tmp; - - my_memset(&tmp, 0, sizeof(test_model)); - res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 1"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "key_i64_front 2"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = front_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(carol) && tmp.age == 30 && tmp.phone == 545342453, "key_i64_front 3"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 4"); - - uint64_t key = N(carol); - remove_i64(current_receiver(), N(b), &key); - - my_memset(&tmp, 0, sizeof(test_model)); - res = front_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 5"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(dave) && tmp.age == 46 && tmp.phone == 6535354, "key_i64_front 6"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 7"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(bob) && tmp.age == 15 && tmp.phone == 11932435, "key_i64_front 8"); - - key = N(dave); - remove_i64(current_receiver(), N(b), &key); - - res = front_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "key_i64_front 9"); - res = back_i64( current_receiver(), current_receiver(), N(b), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "key_i64_front 10"); - - key = N(bob); - remove_i64(current_receiver(), N(a), &key); - - my_memset(&tmp, 0, sizeof(test_model)); - res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 11"); - - my_memset(&tmp, 0, sizeof(test_model)); - res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == sizeof(test_model) && tmp.name == N(alice) && tmp.age == 20 && tmp.phone == 4234622, "key_i64_front 12"); - - key = N(alice); - remove_i64(current_receiver(), N(a), &key); - - res = front_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "key_i64_front 13"); - res = back_i64( current_receiver(), current_receiver(), N(a), &tmp, sizeof(test_model) ); - eosio_assert(res == 0, "key_i64_front 14"); -} - -uint32_t store_set_in_table(uint64_t table_name) -{ - - uint32_t res = 0; - - TestModel128x2 alice0{0, 500, N(alice0), table_name}; - TestModel128x2 alice1{1, 400, N(alice1), table_name}; - TestModel128x2 alice2{2, 300, N(alice2), table_name}; - TestModel128x2 alice22{2, 200, N(alice33), table_name}; - - res = store_i128i128(current_receiver(), table_name, &alice0, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store alice0" ); - - res = store_i128i128(current_receiver(), table_name, &alice1, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store alice1" ); - - res = store_i128i128(current_receiver(), table_name, &alice2, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store alice2" ); - - res = store_i128i128(current_receiver(), table_name, &alice22, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store alice22" ); - - return res; - TestModel128x2 bob0{10, 1, N(bob0), table_name}; - TestModel128x2 bob1{11, 2, N(bob1), table_name}; - TestModel128x2 bob2{12, 3, N(bob2), table_name}; - TestModel128x2 bob3{13, 4, N(bob3), table_name}; - - res = store_i128i128(current_receiver(), table_name, &bob0, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store bob0" ); - - res = store_i128i128(current_receiver(), table_name, &bob1, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store bob1" ); - - res = store_i128i128(current_receiver(), table_name, &bob2, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store bob2" ); - - res = store_i128i128(current_receiver(), table_name, &bob3, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store bob3" ); - - TestModel128x2 carol0{20, 900, N(carol0), table_name}; - TestModel128x2 carol1{21, 800, N(carol1), table_name}; - TestModel128x2 carol2{22, 700, N(carol2), table_name}; - TestModel128x2 carol3{23, 600, N(carol3), table_name}; - - res = store_i128i128(current_receiver(), table_name, &carol0, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store carol0" ); - - res = store_i128i128(current_receiver(), table_name, &carol1, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store carol1" ); - - res = store_i128i128(current_receiver(), table_name, &carol2, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store carol2" ); - - res = store_i128i128(current_receiver(), table_name, &carol3, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store carol3" ); - - TestModel128x2 dave0{30, 8, N(dave0), table_name}; - TestModel128x2 dave1{31, 7, N(dave1), table_name}; - TestModel128x2 dave2{32, 5, N(dave2), table_name}; - TestModel128x2 dave3{33, 4, N(dave3), table_name}; - - res = store_i128i128(current_receiver(), table_name, &dave0, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store dave0" ); - - res = store_i128i128(current_receiver(), table_name, &dave1, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store dave1" ); - - res = store_i128i128(current_receiver(), table_name, &dave2, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store dave2" ); - - res = store_i128i128(current_receiver(), table_name, &dave3, sizeof(TestModel128x2)); - eosio_assert(res == 1, "store dave3" ); - return res; -} - -void store_set_in_table(TestModel3xi64* records, int len, uint64_t table_name) { - uint32_t res = 0; - for( int i = 0; i < len; ++i ) { - TestModel3xi64 *tmp = records+i; - tmp->table = table_name; - res = store_i64i64i64(current_receiver(), table_name, tmp, sizeof(TestModel3xi64)); - eosio_assert(res == 1, "store_set_in_table" ); - } -} - - -//TODO fix things -#if 0 -void test_db::key_i64i64i64_general() { - - uint32_t res = 0; - - TestModel3xi64 records[] = { - {1, 1, 0, N()}, // 0 <--------------------------- - {1, 1, 1, N()}, // 1 | - {1, 2, 2, N()}, // 2 <--------------- | - {2, 1, 3, N()}, // 3 | | - {2, 2, 2, N()}, // 4 same {secondary,tertiary} | - {2, 2, 5, N()}, // 5 | - {3, 1, 6, N()}, // 6 | - {4, 0, 7, N()}, // 7 | - {4, 5, 8, N()}, // 8 | - {5, 1, 9, N()}, // 9 | - {5, 2, 0, N()}, //10 same {tertiary}------------- - }; - - store_set_in_table(records, sizeof(records)/sizeof(records[0]), N(table1)); - store_set_in_table(records, sizeof(records)/sizeof(records[0]), N(table2)); - store_set_in_table(records, sizeof(records)/sizeof(records[0]), N(table3)); - - #define CALL(F, O, I, T, V) F##_##I##_##O(current_receiver(), current_receiver(), T, &V, sizeof(V)) - - #define LOAD(I, O, T, V) CALL(load, O, I, T, V) - #define FRONT(I, O, T, V) CALL(front, O, I, T, V) - #define BACK(I, O, T, V) CALL(back, O, I, T, V) - #define NEXT(I, O, T, V) CALL(next, O, I, T, V) - #define PREV(I, O, T, V) CALL(previous, O, I, T, V) - #define UPPER(I, O, T, V) CALL(upper_bound, O, I, T, V) - #define LOWER(I, O, T, V) CALL(lower_bound, O, I, T, V) - - #define LOGME 0 - #define BS(X) ((X) ? "true" : "false") - #define TABLE1_ASSERT(I, V, msg) \ - if(LOGME) {\ - eosio::print(msg, " : ", res, " a:", V.a, " b:", V.b, " c:", V.c, " t:", V.table, "inx:", uint64_t(I), " ("); \ - eosio::print(BS(res == sizeof(V)), " ", BS(records[I].a == V.a), " ", BS(records[I].b == V.b), " ", BS(records[I].c == V.c), " => ", N(table2), ")\n"); \ - } \ - eosio_assert( res == sizeof(V) && records[I].a == V.a && records[I].b == V.b && \ - records[I].c == V.c /*&& records[I].table == uint64_t(N(table2))*/, msg); - - #define LOAD_OK(I, O, T, INX, MSG) \ - {eosio::remove_reference::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \ - res = LOAD(I, O, T, tmp); \ - TABLE1_ASSERT(INX, tmp, MSG)} - - #define LOAD_ER(I, O, T, MSG) \ - {eosio::remove_reference::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \ - res = LOAD(I, O, T, tmp); \ - eosio_assert(res == -1, MSG)} - - #define FRONT_OK(I, O, T, INX, MSG) \ - {eosio::remove_reference::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \ - res = FRONT(I, O, T, tmp); \ - TABLE1_ASSERT(INX, tmp, MSG)} - - #define BACK_OK(I, O, T, INX, MSG) \ - {eosio::remove_reference::type tmp; my_memset(&tmp, 0, sizeof(tmp));tmp = V; \ - res = BACK(I, O, T, tmp); \ - TABLE1_ASSERT(INX, tmp, MSG)} - - TestModel3xi64 V; - - V={0}; LOAD_ER(primary, i64i64i64, N(table2), "i64x3 LOAD primary fail 0"); - V={1}; LOAD_OK(primary, i64i64i64, N(table2), 0, "i64x3 LOAD primary 1"); - V={2}; LOAD_OK(primary, i64i64i64, N(table2), 3, "i64x3 LOAD primary 2"); - V={3}; LOAD_OK(primary, i64i64i64, N(table2), 6, "i64x3 LOAD primary 3"); - V={4}; LOAD_OK(primary, i64i64i64, N(table2), 7, "i64x3 LOAD primary 4"); - V={5}; LOAD_OK(primary, i64i64i64, N(table2), 9, "i64x3 LOAD primary 5"); - V={6}; LOAD_ER(primary, i64i64i64, N(table2), "i64x3 LOAD primary fail 6"); - - V={11,0}; LOAD_OK(secondary, i64i64i64, N(table2), 7, "i64x3 LOAD secondary 0"); - V={11,1}; LOAD_OK(secondary, i64i64i64, N(table2), 0, "i64x3 LOAD secondary 1"); - V={11,2}; LOAD_OK(secondary, i64i64i64, N(table2),10, "i64x3 LOAD secondary 2"); - V={11,3}; LOAD_ER(secondary, i64i64i64, N(table2), "i64x3 LOAD secondary fail 3"); - V={11,4}; LOAD_ER(secondary, i64i64i64, N(table2), "i64x3 LOAD secondary fail 4"); - V={11,5}; LOAD_OK(secondary, i64i64i64, N(table2), 8, "i64x3 LOAD secondary 5"); - V={11,6}; LOAD_ER(secondary, i64i64i64, N(table2), "i64x3 LOAD secondary fail 6"); - - V={11,12,0}; LOAD_OK(tertiary, i64i64i64, N(table2), 0, "i64x3 LOAD tertiary 0"); - V={11,12,1}; LOAD_OK(tertiary, i64i64i64, N(table2), 1, "i64x3 LOAD tertiary 1"); - V={11,12,2}; LOAD_OK(tertiary, i64i64i64, N(table2), 2, "i64x3 LOAD tertiary 2"); - V={11,12,3}; LOAD_OK(tertiary, i64i64i64, N(table2), 3, "i64x3 LOAD tertiary 3"); - V={11,12,4}; LOAD_ER(tertiary, i64i64i64, N(table2), "i64x3 LOAD tertiary 4"); - V={11,12,5}; LOAD_OK(tertiary, i64i64i64, N(table2), 5, "i64x3 LOAD tertiary 5"); - V={11,12,6}; LOAD_OK(tertiary, i64i64i64, N(table2), 6, "i64x3 LOAD tertiary 6"); - V={11,12,7}; LOAD_OK(tertiary, i64i64i64, N(table2), 7, "i64x3 LOAD tertiary 7"); - V={11,12,8}; LOAD_OK(tertiary, i64i64i64, N(table2), 8, "i64x3 LOAD tertiary 8"); - V={11,12,9}; LOAD_OK(tertiary, i64i64i64, N(table2), 9, "i64x3 LOAD tertiary 9"); - V={11,12,10}; LOAD_ER(tertiary, i64i64i64, N(table2), "i64x3 LOAD tertiary 10"); - V={11,12,11}; LOAD_ER(tertiary, i64i64i64, N(table2), "i64x3 LOAD tertiary fail 11"); - - #define NEXT_ALL(I, O, T) \ - { \ - auto n = sizeof(I)/sizeof(I[0]); \ - auto j = 0; \ - do { \ - eosio::remove_reference::type tmp = records[I[j]]; \ - res = NEXT(I, i64i64i64, N(table2), tmp);\ - if(j+1::type tmp = records[I[j]]; \ - res = PREV(I, i64i64i64, N(table2), tmp);\ - if(j>0){ TABLE1_ASSERT(I[j-1], tmp, "i64x3 PREV " #I " ok "); } \ - else { eosio_assert(res == -1, "i64x3 PREV " #I " fail "); }\ - } while(--j>0); \ - } - - NEXT_ALL(primary, i64i64i64, N(table2)); - NEXT_ALL(secondary, i64i64i64, N(table2)); - NEXT_ALL(tertiary, i64i64i64, N(table2)); - - PREV_ALL(primary, i64i64i64, N(table2)); - PREV_ALL(secondary, i64i64i64, N(table2)); - PREV_ALL(tertiary, i64i64i64, N(table2)); - - FRONT_OK(primary, i64i64i64, N(table2), primary[0], "i64x3 FRONT primary"); - FRONT_OK(secondary, i64i64i64, N(table2), secondary[0], "i64x3 FRONT secondary"); - FRONT_OK(tertiary, i64i64i64, N(table2), tertiary[0], "i64x3 FRONT tertiary"); - - BACK_OK(primary, i64i64i64, N(table2), primary[10], "i64x3 BACK primary"); - BACK_OK(secondary, i64i64i64, N(table2), secondary[10], "i64x3 BACK secondary"); - BACK_OK(tertiary, i64i64i64, N(table2), tertiary[10], "i64x3 BACK tertiary"); - - #define LOWER_ALL(I, O, T) \ - { \ - auto n = sizeof(I##_lb)/sizeof(I##_lb[0]); \ - auto j = 0; \ - do { \ - eosio::remove_reference::type tmp = records[j]; \ - res = LOWER(I, i64i64i64, N(table2), tmp);\ - TABLE1_ASSERT(I##_lb[j], tmp, "i64x3 LOWER " #I " ok ");\ - } while(++j::type tmp = records[j]; \ - res = UPPER(I, i64i64i64, N(table2), tmp);\ - if(res == -1) { eosio_assert(I##_ub[j]==-1,"i64x3 UPPER " #I " fail ") } \ - else { TABLE1_ASSERT(I##_ub[j], tmp, "i64x3 UPPER " #I " ok "); } \ - } while(++j key + value bytes: 2528 Bytes - // 1024 * 2 * (2528 + 32) - char key[] = "0000abcdefghijklmnopqrstuvwxy"; - const uint32_t value_size = 2498; - char* value = static_cast(eosio::malloc(value_size)); - value[4] = '\0'; - for(int i = 0; i < 1024 * 2; ++i) - { - set_key_str(i, key); - // set the value with the same prefix to be able to identify - set_key_str(i, value); - store_str(N(dblimits), N(dblstr), key, sizeof(key), value, value_size); - } - eosio::free(value); -} - -void test_db::key_str_min_exceed_limit() -{ - char key = '1'; - char value = '1'; - // assuming max memory: 5 MBytes - // assuming row overhead: 16 Bytes - // key length: 1 bytes - // value length: 1 bytes - // -> key + value bytes: 8 Bytes - // 8 + 32 = 40 Bytes (not enough space) - store_str(N(dblimits), N(dblstr), &key, 1, &value, 1); -} - -void test_db::key_str_under_limit() -{ - // assuming max memory: 5 MBytes - // assuming row overhead: 16 Bytes - // key length: 30 bytes - // value length: 2489 bytes - // -> key + value bytes: 2520 Bytes - // 1024 * 2 * (2520 + 32) = 5,226,496 => 16K bytes remaining - char key[] = "0000abcdefghijklmnopqrstuvwxy"; - const uint32_t value_size = 2489; - char* value = static_cast(eosio::malloc(value_size)); - value[4] = '\0'; - for(int i = 0; i < 1024 * 2; ++i) - { - set_key_str(i, key); - // set the value with the same prefix to be able to identify - set_key_str(i, value); - store_str(N(dblimits), N(dblstr), key, sizeof(key), value, value_size); - } - eosio::free(value); -} - -void test_db::key_str_available_space_exceed_limit() -{ - // key length: 30 bytes - // value length: 16323 bytes - // -> key + value bytes: 16360 Bytes (rounded to byte boundary) - // 16,392 Bytes => exceeds 16K bytes remaining - char key[] = "0000abcdefghijklmnopqrstuvwxy"; - set_key_str(9999, key); - const uint32_t value_size = 16323; - char* value = static_cast(eosio::malloc(value_size)); - store_str(N(dblimits), N(dblstr), key, sizeof(key), value, value_size); - eosio::free(value); -} - -void test_db::key_str_another_under_limit() -{ - // 16K bytes remaining - // key length: 30 bytes - // value length: 18873 bytes - // -> key + value bytes: 18904 Bytes (rounded to byte boundary) - // 16,384 Bytes => just under 16K bytes remaining - char key[] = "0000abcdefghijklmnopqrstuvwxy"; - set_key_str(0, key); - uint32_t value_size = 18873; - char* value = static_cast(eosio::malloc(value_size)); - update_str(N(dblimits), N(dblstr), key, sizeof(key), value, value_size); - // 0 bytes remaining - - // key length: 30 bytes - // value length: 2489 bytes - // -> key + value bytes: 2520 Bytes - set_key_str(1, key); - remove_str(N(dblimits), N(dblstr), key, sizeof(key)); - // 2,552 Bytes remaining - - // leave too little room for 32 Byte overhead + (key + value = 8 Byte min) - // key length: 30 bytes - // value length: 4909 bytes - // -> key + value bytes: 5040 Bytes - value_size = 2489 + 2514; - set_key_str(2, key); - value = static_cast(eosio::realloc(value, value_size)); - update_str(N(dblimits), N(dblstr), key, sizeof(key), value, value_size); - eosio::free(value); -} - -void test_db::key_i64_setup_limit() -{ - // assuming max memory: 5M Bytes - // assuming row overhead: 16 Bytes - // key length: 8 bytes - // value length: 315 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 2528 Bytes - // 1024 * 2 * (2528 + 32) = 5,242,880 - const uint64_t value_size = 315 * sizeof(uint64_t) + 1; - auto value = (uint64_t*)eosio::malloc(value_size); - for(int i = 0; i < 1024 * 2; ++i) - { - value[0] = i; - store_i64(N(dblimits), N(dbli64), (char*)value, value_size); - } - eosio::free(value); -} - -void test_db::key_i64_min_exceed_limit() -{ - // will allocate 8 + 32 Bytes - // at 5M Byte limit, so cannot store anything - uint64_t value = (uint64_t)-1; - store_i64(N(dblimits), N(dbli64), (char*)&value, sizeof(uint64_t)); -} - -void test_db::key_i64_under_limit() -{ - // updating keys' values - // key length: 8 bytes - // value length: 299 * 8 bytes - // -> key + value bytes: 2400 Bytes - // 1024 * 2 * (2400 + 32) = 4,980,736 - const uint64_t value_size = 300 * sizeof(uint64_t); - auto value = (uint64_t*)eosio::malloc(value_size); - for(int i = 0; i < 1024 * 2; ++i) - { - value[0] = i; - store_i64(N(dblimits), N(dbli64), (char*)value, value_size); - } - // 262,144 Bytes remaining - eosio::free(value); -} - -void test_db::key_i64_available_space_exceed_limit() -{ - // 262,144 Bytes remaining - // key length: 8 bytes - // value length: 32764 * 8 bytes - // -> key + value bytes: 262,120 Bytes - // storing 262,152 Bytes exceeds remaining - const uint64_t value_size = 32765 * sizeof(uint64_t); - auto value = (uint64_t*)eosio::malloc(value_size); - value[0] = 1024 * 2; - store_i64(N(dblimits), N(dbli64), (char*)value, value_size); - eosio::free(value); -} - -void test_db::key_i64_another_under_limit() -{ - // 262,144 Bytes remaining - // key length: 8 bytes - // value length: 33067 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 264,544 Bytes - // replacing storage bytes so 264,544 - 2400 = 262,144 Bytes (0 Bytes remaining) - uint64_t value_size = 33067 * sizeof(uint64_t) + 7; - auto value = (uint64_t*)eosio::malloc(value_size); - value[0] = 15; - update_i64(N(dblimits), N(dbli64), (char*)value, value_size); - - // 0 Bytes remaining - // key length: 8 bytes - // previous value length: 299 * 8 bytes - // -> key + value bytes: 2400 Bytes - // free up 2,432 Bytes - value[0] = 14; - remove_i64(N(dblimits), N(dbli64), (char*)value); - - // 2,432 Bytes remaining - // key length: 8 bytes - // previous value length: 294 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 2,368 Bytes - // 2,400 Bytes allocated - value_size = 295 * sizeof(uint64_t) + 3; - value = (uint64_t*)eosio::realloc(value, value_size); - value[0] = 1024 * 2; - store_i64(N(dblimits), N(dbli64), (char*)value, value_size); - // 32 Bytes remaining (smallest row entry is 40 Bytes) - - eosio::free(value); -} - -void test_db::key_i128i128_setup_limit() -{ - // assuming max memory: 5M Bytes - // assuming row overhead: 16 Bytes - // keys length: 32 bytes - // value length: 312 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 2528 Bytes - // 1024 * 2 * (2528 + 32) = 5,242,880 - const uint64_t value_size = 315 * sizeof(uint64_t) + 1; - auto value = (uint128_t*)eosio::malloc(value_size); - for(int i = 0; i < 1024 * 2; ++i) - { - value[0] = i; - value[1] = value[0] + 1; - store_i128i128(N(dblimits), N(dbli128i128), (char*)value, value_size); - } - eosio::free(value); -} - -void test_db::key_i128i128_min_exceed_limit() -{ - // will allocate 32 + 32 Bytes - // at 5M Byte limit, so cannot store anything - const uint64_t value_size = 2 * sizeof(uint128_t); - auto value = (uint128_t*)eosio::malloc(value_size); - value[0] = (uint128_t)-1; - value[1] = value[0] + 1; - store_i128i128(N(dblimits), N(dbli128i128), (char*)&value, value_size); -} - -void test_db::key_i128i128_under_limit() -{ - // updating keys' values - // keys length: 32 bytes - // value length: 296 * 8 bytes - // -> key + value bytes: 2400 Bytes - // 1024 * 2 * (2400 + 32) = 4,980,736 - const uint64_t value_size = 300 * sizeof(uint64_t); - auto value = (uint128_t*)eosio::malloc(value_size); - for(int i = 0; i < 1024 * 2; ++i) - { - value[0] = i; - value[1] = value[0] + 1; - store_i128i128(N(dblimits), N(dbli128i128), (char*)value, value_size); - } - // 262,144 Bytes remaining - eosio::free(value); -} - -void test_db::key_i128i128_available_space_exceed_limit() -{ - // 262,144 Bytes remaining - // keys length: 32 bytes - // value length: 32761 * 8 bytes - // -> key + value bytes: 262,120 Bytes - // storing 262,152 Bytes exceeds remaining - const uint64_t value_size = 32765 * sizeof(uint64_t); - auto value = (uint128_t*)eosio::malloc(value_size); - value[0] = 1024 * 2; - value[1] = value[0] + 1; - store_i128i128(N(dblimits), N(dbli128i128), (char*)value, value_size); - eosio::free(value); -} - -void test_db::key_i128i128_another_under_limit() -{ - // 262,144 Bytes remaining - // keys length: 32 bytes - // value length: 33064 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 264,544 Bytes - // replacing storage bytes so 264,544 - 2400 = 262,144 Bytes (0 Bytes remaining) - uint64_t value_size = 33067 * sizeof(uint64_t) + 7; - auto value = (uint128_t*)eosio::malloc(value_size); - value[0] = 15; - value[1] = value[0] + 1; - update_i128i128(N(dblimits), N(dbli128i128), (char*)value, value_size); - - // 0 Bytes remaining - // keys length: 32 bytes - // previous value length: 296 * 8 bytes - // -> key + value bytes: 2400 Bytes - // free up 2,432 Bytes - value[0] = 14; - value[1] = value[0] + 1; - remove_i128i128(N(dblimits), N(dbli128i128), (char*)value); - - // 2,432 Bytes remaining - // keys length: 32 bytes - // previous value length: 288 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 2,344 Bytes - // 2,376 Bytes allocated - value_size = 292 * sizeof(uint64_t) + 3; - value = (uint128_t*)eosio::realloc(value, value_size); - value[0] = 1024 * 2; - value[1] = value[0] + 1; - store_i128i128(N(dblimits), N(dbli128i128), (char*)value, value_size); - // 56 Bytes remaining (smallest row entry is 64 Bytes) - - eosio::free(value); - -} - -void test_db::key_i64i64i64_setup_limit() -{ - // assuming max memory: 5M Bytes - // assuming row overhead: 16 Bytes - // keys length: 24 bytes - // value length: 313 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 2528 Bytes - // 1024 * 2 * (2528 + 32) = 5,242,880 - const uint64_t value_size = 315 * sizeof(uint64_t) + 1; - auto value = (uint64_t*)eosio::malloc(value_size); - for(int i = 0; i < 1024 * 2; ++i) - { - value[0] = i; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - store_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)value, value_size); - } - eosio::free(value); -} - -void test_db::key_i64i64i64_min_exceed_limit() -{ - // will allocate 24 + 32 Bytes - // at 5M Byte limit, so cannot store anything - const uint64_t value_size = 3 * sizeof(uint64_t); - auto value = (uint64_t*)eosio::malloc(value_size); - value[0] = (uint64_t)-1; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - store_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)&value, value_size); -} - -void test_db::key_i64i64i64_under_limit() -{ - // updating keys' values - // keys length: 24 bytes - // value length: 297 * 8 bytes - // -> key + value bytes: 2400 Bytes - // 1024 * 2 * (2400 + 32) = 4,980,736 - const uint64_t value_size = 300 * sizeof(uint64_t); - auto value = (uint64_t*)eosio::malloc(value_size); - for(int i = 0; i < 1024 * 2; ++i) - { - value[0] = i; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - store_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)value, value_size); - } - // 262,144 Bytes remaining - eosio::free(value); -} - -void test_db::key_i64i64i64_available_space_exceed_limit() -{ - // 262,144 Bytes remaining - // keys length: 24 bytes - // value length: 32762 * 8 bytes - // -> key + value bytes: 262,120 Bytes - // storing 262,152 Bytes exceeds remaining - const uint64_t value_size = 32765 * sizeof(uint64_t); - auto value = (uint64_t*)eosio::malloc(value_size); - value[0] = 1024 * 2; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - store_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)value, value_size); - eosio::free(value); -} - -void test_db::key_i64i64i64_another_under_limit() -{ - // 262,144 Bytes remaining - // keys length: 24 bytes - // value length: 33065 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 264,544 Bytes - // replacing storage bytes so 264,544 - 2400 = 262,144 Bytes (0 Bytes remaining) - uint64_t value_size = 33067 * sizeof(uint64_t) + 7; - auto value = (uint64_t*)eosio::malloc(value_size); - value[0] = 15; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - update_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)value, value_size); - - // 0 Bytes remaining - // keys length: 24 bytes - // previous value length: 297 * 8 bytes - // -> key + value bytes: 2400 Bytes - // free up 2,432 Bytes - value[0] = 14; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - remove_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)value); - - // 2,432 Bytes remaining - // keys length: 24 bytes - // previous value length: 290 * 8 bytes (rounded to byte boundary) - // -> key + value bytes: 2,352 Bytes - // 2,384 Bytes allocated - value_size = 295 * sizeof(uint64_t) + 3; - value = (uint64_t*)eosio::realloc(value, value_size); - value[0] = 1024 * 2; - value[1] = value[0] + 1; - value[2] = value[0] + 2; - store_i64i64i64(N(dblimits), N(dbli64i64i64), (char*)value, value_size); - // 48 Bytes remaining (smallest row entry is 56 Bytes) - - eosio::free(value); - -} -#endif - void test_db::primary_i64_general() { auto table1 = N(table1); diff --git a/contracts/test_api_mem/test_extended_memory.cpp b/contracts/test_api_mem/test_extended_memory.cpp index 9650218bdb0c6ee40a799b5509f168c270c70ca4..7fac1eeae2bbfd214fde13bb3b178d6413e113c1 100644 --- a/contracts/test_api_mem/test_extended_memory.cpp +++ b/contracts/test_api_mem/test_extended_memory.cpp @@ -90,8 +90,7 @@ void test_extended_memory::test_page_memory_exceeded() { } void test_extended_memory::test_page_memory_negative_bytes() { - sbrk((uint32_t)-1); - eosio_assert(0, "Should have thrown exception for trying to remove memory"); + eosio_assert(reinterpret_cast(sbrk(-1)) == -1, "Should have errored for trying to remove memory"); } void test_extended_memory::test_initial_buffer() { diff --git a/contracts/test_api_mem/test_memory.cpp b/contracts/test_api_mem/test_memory.cpp index e3c1a12f0062d74d75e1f8a612d5e932f97e21e6..dd079ebdab872d3d63a975ba9986b9d7ea1379fe 100644 --- a/contracts/test_api_mem/test_memory.cpp +++ b/contracts/test_api_mem/test_memory.cpp @@ -174,7 +174,7 @@ void test_memory::test_memory_hunks_disjoint() loop_ptr1[i] = (char*)malloc(64 * 1024 - 28); eosio_assert(loop_ptr1[i] != nullptr, "should have allocated a 64K char buf"); - eosio_assert(sbrk(4) != nullptr, "should be able to allocate 8 bytes"); + eosio_assert(reinterpret_cast(sbrk(4)) != -1, "should be able to allocate 8 bytes"); } // the 15th extra heap is reduced in size because of the 14 * 8 bytes allocated by sbrk calls diff --git a/contracts/test_api_multi_index/test_api_multi_index.cpp b/contracts/test_api_multi_index/test_api_multi_index.cpp index 1ab9d111d3dd9f8148df98f58bf0229a419b7135..e253f4292b423baa45e612244aba758fb7c96a41 100644 --- a/contracts/test_api_multi_index/test_api_multi_index.cpp +++ b/contracts/test_api_multi_index/test_api_multi_index.cpp @@ -13,7 +13,7 @@ extern "C" { } - void apply( unsigned long long code, unsigned long long action ) { + void apply( unsigned long long, unsigned long long action ) { WASM_TEST_HANDLER(test_multi_index, idx64_general); WASM_TEST_HANDLER(test_multi_index, idx64_store_only); @@ -26,6 +26,22 @@ extern "C" { WASM_TEST_HANDLER(test_multi_index, idx128_autoincrement_test_part2); WASM_TEST_HANDLER(test_multi_index, idx256_general); WASM_TEST_HANDLER(test_multi_index, idx_double_general); + WASM_TEST_HANDLER(test_multi_index, idx64_pk_iterator_exceed_end); + WASM_TEST_HANDLER(test_multi_index, idx64_sk_iterator_exceed_end); + WASM_TEST_HANDLER(test_multi_index, idx64_pk_iterator_exceed_begin); + WASM_TEST_HANDLER(test_multi_index, idx64_sk_iterator_exceed_begin); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_pk_ref_to_other_table); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_sk_ref_to_other_table); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_pk_end_itr_to_iterator_to); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_pk_end_itr_to_modify); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_pk_end_itr_to_erase); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_sk_end_itr_to_iterator_to); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_sk_end_itr_to_modify); + WASM_TEST_HANDLER(test_multi_index, idx64_pass_sk_end_itr_to_erase); + WASM_TEST_HANDLER(test_multi_index, idx64_modify_primary_key); + WASM_TEST_HANDLER(test_multi_index, idx64_run_out_of_avl_pk); + WASM_TEST_HANDLER(test_multi_index, idx64_sk_cache_pk_lookup); + WASM_TEST_HANDLER(test_multi_index, idx64_pk_cache_sk_lookup); //unhandled test call eosio_assert(false, "Unknown Test"); diff --git a/contracts/test_api_multi_index/test_multi_index.cpp b/contracts/test_api_multi_index/test_multi_index.cpp index bde9e8e03855d7e130cbb76d9977ca1307095764..cec2bb5315fa94d468afd8aadf3d205597ca380e 100644 --- a/contracts/test_api_multi_index/test_multi_index.cpp +++ b/contracts/test_api_multi_index/test_multi_index.cpp @@ -240,6 +240,18 @@ namespace _test_multi_index { } + template + auto idx64_table() + { + using namespace eosio; + typedef record_idx64 record; + // Load table using multi_index + multi_index > + > table( current_receiver(), current_receiver() ); + return table; + } + } /// _test_multi_index void test_multi_index::idx64_store_only() @@ -570,3 +582,187 @@ void test_multi_index::idx_double_general() } } + +void test_multi_index::idx64_pk_iterator_exceed_end() +{ + auto table = _test_multi_index::idx64_table(); + auto end_itr = table.end(); + // Should fail + ++end_itr; +} + +void test_multi_index::idx64_sk_iterator_exceed_end() +{ + auto table = _test_multi_index::idx64_table(); + auto end_itr = table.get_index().end(); + // Should fail + ++end_itr; +} + +void test_multi_index::idx64_pk_iterator_exceed_begin() +{ + auto table = _test_multi_index::idx64_table(); + auto begin_itr = table.begin(); + // Should fail + --begin_itr; +} + +void test_multi_index::idx64_sk_iterator_exceed_begin() +{ + auto table = _test_multi_index::idx64_table(); + auto begin_itr = table.get_index().begin(); + // Should fail + --begin_itr; +} + +void test_multi_index::idx64_pass_pk_ref_to_other_table() +{ + auto table1 = _test_multi_index::idx64_table(); + auto table2 = _test_multi_index::idx64_table(); + + auto table1_pk_itr = table1.find(781); + eosio_assert(table1_pk_itr != table1.end() && table1_pk_itr->sec == N(bob), "idx64_pass_pk_ref_to_other_table - table.find() of existing primary key"); + + // Should fail + table2.iterator_to(*table1_pk_itr); +} + +void test_multi_index::idx64_pass_sk_ref_to_other_table() +{ + auto table1 = _test_multi_index::idx64_table(); + auto table2 = _test_multi_index::idx64_table(); + + auto table1_pk_itr = table1.find(781); + eosio_assert(table1_pk_itr != table1.end() && table1_pk_itr->sec == N(bob), "idx64_pass_sk_ref_to_other_table - table.find() of existing primary key"); + + auto table2_sec_index = table2.get_index(); + // Should fail + table2_sec_index.iterator_to(*table1_pk_itr); +} + +void test_multi_index::idx64_pass_pk_end_itr_to_iterator_to() +{ + auto table = _test_multi_index::idx64_table(); + auto end_itr = table.end(); + // Should fail + table.iterator_to(*end_itr); +} + +void test_multi_index::idx64_pass_pk_end_itr_to_modify() +{ + auto table = _test_multi_index::idx64_table(); + auto end_itr = table.end(); + + auto payer = current_receiver(); + // Should fail + table.modify(end_itr, payer, [](auto&){}); +} + + +void test_multi_index::idx64_pass_pk_end_itr_to_erase() +{ + auto table = _test_multi_index::idx64_table(); + auto end_itr = table.end(); + + // Should fail + table.erase(end_itr); +} + +void test_multi_index::idx64_pass_sk_end_itr_to_iterator_to() +{ + auto table = _test_multi_index::idx64_table(); + auto sec_index = table.get_index(); + auto end_itr = sec_index.end(); + + // Should fail + sec_index.iterator_to(*end_itr); +} + +void test_multi_index::idx64_pass_sk_end_itr_to_modify() +{ + auto table = _test_multi_index::idx64_table(); + auto sec_index = table.get_index(); + auto end_itr = sec_index.end(); + + auto payer = current_receiver(); + // Should fail + sec_index.modify(end_itr, payer, [](auto&){}); +} + + +void test_multi_index::idx64_pass_sk_end_itr_to_erase() +{ + auto table = _test_multi_index::idx64_table(); + auto sec_index = table.get_index(); + auto end_itr = sec_index.end(); + + // Should fail + sec_index.erase(end_itr); +} + +void test_multi_index::idx64_modify_primary_key() +{ + auto table = _test_multi_index::idx64_table(); + + auto pk_itr = table.find(781); + eosio_assert(pk_itr != table.end() && pk_itr->sec == N(bob), "idx64_modify_primary_key - table.find() of existing primary key"); + + auto payer = current_receiver(); + + // Should fail + table.modify(pk_itr, payer, [](auto& r){ + r.id = 1100; + }); +} + +void test_multi_index::idx64_run_out_of_avl_pk() +{ + auto table = _test_multi_index::idx64_table(); + + auto pk_itr = table.find(781); + eosio_assert(pk_itr != table.end() && pk_itr->sec == N(bob), "idx64_modify_primary_key - table.find() of existing primary key"); + + auto payer = current_receiver(); + + table.emplace( payer, [&]( auto& r ) { + r.id = static_cast(-4); + r.sec = N(alice); + }); + eosio_assert(table.available_primary_key() == static_cast(-3), "idx64_run_out_of_avl_pk - incorrect available primary key"); + + table.emplace( payer, [&]( auto& r ) { + r.id = table.available_primary_key(); + r.sec = N(bob); + }); + + // Should fail + table.available_primary_key(); +} + +void test_multi_index::idx64_sk_cache_pk_lookup() +{ + auto table = _test_multi_index::idx64_table(); + + auto sec_index = table.get_index(); + auto sk_itr = sec_index.find(N(bob)); + eosio_assert(sk_itr != sec_index.end() && sk_itr->id == 540, "idx64_sk_cache_pk_lookup - sec_index.find() of existing secondary key"); + + auto pk_itr = table.iterator_to(*sk_itr); + auto prev_itr = --pk_itr; + eosio_assert(prev_itr->id == 265 && prev_itr->sec == N(alice), "idx64_sk_cache_pk_lookup - previous record"); +} + +void test_multi_index::idx64_pk_cache_sk_lookup() +{ + auto table = _test_multi_index::idx64_table(); + + + auto pk_itr = table.find(540); + eosio_assert(pk_itr != table.end() && pk_itr->sec == N(bob), "idx64_pk_cache_sk_lookup - table.find() of existing primary key"); + + auto sec_index = table.get_index(); + auto sk_itr = sec_index.iterator_to(*pk_itr); + auto next_itr = ++sk_itr; + eosio_assert(next_itr->id == 781 && next_itr->sec == N(bob), "idx64_pk_cache_sk_lookup - next record"); +} + diff --git a/contracts/tic_tac_toe/tic_tac_toe.hpp b/contracts/tic_tac_toe/tic_tac_toe.hpp index 91697b3099fea3f03454ddf6556ebdd10567dbfe..b5b2be49d94d50903ceca222191df6ba293b4e4b 100644 --- a/contracts/tic_tac_toe/tic_tac_toe.hpp +++ b/contracts/tic_tac_toe/tic_tac_toe.hpp @@ -3,7 +3,6 @@ * @copyright defined in eos/LICENSE.txt */ #include -#include /** * @defgroup tictactoecontract Tic Tac Toe Contract diff --git a/debian/postinst b/debian/postinst index 0e66c2a012874724368108d3dbb4f80f7e4c68bf..42123695c90a4a760f7999a2705659bc30fea8d9 100755 --- a/debian/postinst +++ b/debian/postinst @@ -40,8 +40,8 @@ case "$1" in chown ${USER}:${GROUP} /var/lib/${PACKAGE} chown ${USER}:${GROUP} /etc/${PACKAGE} chown ${USER}:${GROUP} /etc/${PACKAGE}/node_00 - chown ${USER} /usr/bin/eosiod - chmod u+s /usr/bin/eosiod + chown ${USER} /usr/bin/nodeos + chmod u+s /usr/bin/nodeos ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/eosio_build.sh b/eosio_build.sh index 03f83dd08f3b52f64c6c30d35f5154897025b012..1a811fabc2a39310754b58400e89a9c34342461f 100755 --- a/eosio_build.sh +++ b/eosio_build.sh @@ -32,19 +32,17 @@ VERSION=1.1 ULIMIT=$( ulimit -u ) - - # Define directories. WORK_DIR=$PWD BUILD_DIR=${WORK_DIR}/build TEMP_DIR=/tmp - ARCH=$(uname) + ARCH=$( uname ) DISK_MIN=20 txtbld=$(tput bold) bldred=${txtbld}$(tput setaf 1) txtrst=$(tput sgr0) - printf "\n\tARCHITECTURE ${ARCH}\n" + printf "\n\tARCHITECTURE: ${ARCH}\n" if [ $ARCH == "Linux" ]; then @@ -69,8 +67,8 @@ CXX_COMPILER=g++ C_COMPILER=gcc export LLVM_DIR=${HOME}/opt/wasm/lib/cmake/llvm - BUILD_MONGO_DB_PLUGIN=false - MONGOD_CONF="" + MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf + export PATH=${HOME}/opt/mongodb/bin:$PATH ;; "CentOS Linux") FILE=${WORK_DIR}/scripts/eosio_build_centos.sh @@ -78,43 +76,39 @@ CXX_COMPILER=g++ C_COMPILER=gcc export LLVM_DIR=${HOME}/opt/wasm/lib/cmake/llvm - BUILD_MONGO_DB_PLUGIN=false - MONGOD_CONF="" + MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf + export PATH=${HOME}/opt/mongodb/bin:$PATH ;; "Fedora") FILE=${WORK_DIR}/scripts/eosio_build_fedora.sh CXX_COMPILER=g++ C_COMPILER=gcc export LLVM_DIR=${HOME}/opt/wasm/lib/cmake/llvm - BUILD_MONGO_DB_PLUGIN=true MONGOD_CONF=/etc/mongod.conf ;; "Linux Mint") FILE=${WORK_DIR}/scripts/eosio_build_ubuntu.sh CXX_COMPILER=clang++-4.0 C_COMPILER=clang-4.0 - BUILD_MONGO_DB_PLUGIN=true MONGOD_CONF=/etc/mongod.conf ;; "Ubuntu") FILE=${WORK_DIR}/scripts/eosio_build_ubuntu.sh CXX_COMPILER=clang++-4.0 C_COMPILER=clang-4.0 - BUILD_MONGO_DB_PLUGIN=true MONGOD_CONF=/etc/mongod.conf ;; *) printf "\n\tUnsupported Linux Distribution. Exiting now.\n\n" exit 1 esac - + export BOOST_ROOT=${HOME}/opt/boost_1_66_0 export OPENSSL_ROOT_DIR=/usr/include/openssl export OPENSSL_LIBRARIES=/usr/include/openssl export WASM_ROOT=${HOME}/opt/wasm - + . $FILE - fi if [ $ARCH == "Darwin" ]; then @@ -123,7 +117,6 @@ export WASM_ROOT=/usr/local/wasm CXX_COMPILER=clang++ C_COMPILER=clang - BUILD_MONGO_DB_PLUGIN=true MONGOD_CONF=/usr/local/etc/mongod.conf . scripts/eosio_build_darwin.sh @@ -145,7 +138,7 @@ $CMAKE -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CXX_COMPILER} \ -DCMAKE_C_COMPILER=${C_COMPILER} -DWASM_ROOT=${WASM_ROOT} \ - -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DBUILD_MONGO_DB_PLUGIN=${BUILD_MONGO_DB_PLUGIN} \ + -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DBUILD_MONGO_DB_PLUGIN=true \ -DOPENSSL_LIBRARIES=${OPENSSL_LIBRARIES} .. if [ $? -ne 0 ]; then @@ -162,21 +155,23 @@ printf "\n\t>>>>>>>>>>>>>>>>>>>> EOSIO has been successfully built.\n\n" - if [ $BUILD_MONGO_DB_PLUGIN == true ]; then - printf "\n\tChecking if MongoDB is running.\n" - MONGODB_PID=$( pgrep -x mongod ) - if [ -z $MONGODB_PID ]; then - printf "\n\tStarting MongoDB.\n" - sudo mongod -f ${MONGOD_CONF} & - if [ $? -ne 0 ]; then - printf "\n\tUnable to start MongoDB.\nExiting now.\n\n" - exit -1 - fi - printf "\n\tSuccessfully started MongoDB.\n" - else - printf "\n\tMongoDB is running PID=${MONGODB_PID}.\n" + printf "\n\tVerifying MongoDB is running.\n" + MONGODB_PID=$( pgrep -x mongod ) + if [ -z $MONGODB_PID ]; then + printf "\tMongoDB is not currently running.\n" + printf "\tStarting MongoDB.\n" + mongod -f ${MONGOD_CONF} & + if [ $? -ne 0 ]; then + printf "\n\tUnable to start MongoDB.\nExiting now.\n\n" + exit -1 fi + MONGODB_PID=$( pgrep -x mongod ) + printf "\n\tSuccessfully started MongoDB PID = ${MONGODB_PID}.\n" + else + printf "\n\tMongoDB is running PID=${MONGODB_PID}.\n" fi + + make test if [ "x${EOSIO_BUILD_PACKAGE}" != "x" ]; then # Build eos.io package @@ -198,4 +193,4 @@ fi printf "\n\t>>>>>>>>>>>>>>>>>>>> eos.io package has been successfully built.\n\n" - fi + fi \ No newline at end of file diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index acd1a950935e10660796a014df1107be1e3d31c2..1cbf6bf0f3134d85f60aea9466833cf27175f6e9 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -2,7 +2,6 @@ add_subdirectory( fc ) add_subdirectory( softfloat ) add_subdirectory( chainbase ) add_subdirectory( wasm-jit ) -add_subdirectory( egenesis ) add_subdirectory( utilities ) add_subdirectory( appbase ) add_subdirectory( chain ) diff --git a/libraries/chain/apply_context.cpp b/libraries/chain/apply_context.cpp index c2bb284d3aeb25fc70ccb009545e1af057f8c219..7d2102ed997ba424a13d4a11710d950efd6edb8a 100644 --- a/libraries/chain/apply_context.cpp +++ b/libraries/chain/apply_context.cpp @@ -18,15 +18,11 @@ void apply_context::exec_one() auto native = mutable_controller.find_apply_handler(receiver, act.account, act.name); if (native) { (*native)(*this); - } else { - if (a.code.size() > 0) { - // get code from cache - auto code = mutable_controller.get_wasm_cache().checkout_scoped(a.code_version, a.code.data(), - a.code.size()); - // get wasm_interface - auto &wasm = wasm_interface::get(); - wasm.apply(code, *this); - } + } + else if (a.code.size() > 0) { + try { + mutable_controller.get_wasm_interface().apply(a.code_version, a.code, *this); + } catch ( const wasm_exit& ){} } } FC_CAPTURE_AND_RETHROW((_pending_console_output.str())); @@ -278,42 +274,6 @@ const bytes& apply_context::get_packed_transaction() { return trx_meta.packed_trx; } -const char* to_string(contracts::table_key_type key_type) { - switch(key_type) { - case contracts::type_unassigned: - return "unassigned"; - case contracts::type_i64: - return "i64"; - case contracts::type_str: - return "str"; - case contracts::type_i128i128: - return "i128i128"; - case contracts::type_i64i64: - return "i64i64"; - case contracts::type_i64i64i64: - return "i64i64i64"; - default: - return ""; - } -} - -void apply_context::validate_table_key( const table_id_object& t_id, contracts::table_key_type key_type ) { - FC_ASSERT( t_id.key_type == contracts::table_key_type::type_unassigned || key_type == t_id.key_type, - "Table entry for ${code}-${scope}-${table} uses key type ${act_type} should have had type of ${exp_type}", - ("code",t_id.code)("scope",t_id.scope)("table",t_id.table)("act_type",to_string(t_id.key_type))("exp_type", to_string(key_type)) ); -} - -void apply_context::validate_or_add_table_key( const table_id_object& t_id, contracts::table_key_type key_type ) { - if (t_id.key_type == contracts::table_key_type::type_unassigned) - mutable_db.modify( t_id, [&key_type]( auto& o) { - o.key_type = key_type; - }); - else - FC_ASSERT( key_type == t_id.key_type, - "Table entry for ${code}-${scope}-${table} uses key type ${act_type} should have had type of ${exp_type}", - ("code",t_id.code)("scope",t_id.scope)("table",t_id.table)("act_type",to_string(t_id.key_type))("exp_type", to_string(key_type)) ); -} - void apply_context::update_db_usage( const account_name& payer, int64_t delta ) { require_write_lock( payer ); if( (delta > 0) && payer != account_name(receiver) ) { @@ -365,7 +325,6 @@ int apply_context::db_store_i64( uint64_t scope, uint64_t table, const account_n require_write_lock( scope ); const auto& tab = find_or_create_table( receiver, scope, table ); auto tableid = tab.id; - validate_or_add_table_key(tab, contracts::table_key_type::type_i64); FC_ASSERT( payer != account_name(), "must specify a valid account to pay for new record" ); @@ -484,7 +443,6 @@ int apply_context::db_find_i64( uint64_t code, uint64_t scope, uint64_t table, u const auto* tab = find_table( code, scope, table ); if( !tab ) return -1; - validate_table_key(*tab, contracts::table_key_type::type_i64); auto table_end_itr = keyval_cache.cache_table( *tab ); @@ -499,7 +457,6 @@ int apply_context::db_lowerbound_i64( uint64_t code, uint64_t scope, uint64_t ta const auto* tab = find_table( code, scope, table ); if( !tab ) return -1; - validate_table_key(*tab, contracts::table_key_type::type_i64); auto table_end_itr = keyval_cache.cache_table( *tab ); @@ -516,7 +473,6 @@ int apply_context::db_upperbound_i64( uint64_t code, uint64_t scope, uint64_t ta const auto* tab = find_table( code, scope, table ); if( !tab ) return -1; - validate_table_key(*tab, contracts::table_key_type::type_i64); auto table_end_itr = keyval_cache.cache_table( *tab ); @@ -533,33 +489,7 @@ int apply_context::db_end_i64( uint64_t code, uint64_t scope, uint64_t table ) { const auto* tab = find_table( code, scope, table ); if( !tab ) return -1; - validate_table_key(*tab, contracts::table_key_type::type_i64); return keyval_cache.cache_table( *tab ); } - -template<> -contracts::table_key_type apply_context::get_key_type() { - return contracts::table_key_type::type_i64; -} - -template<> -contracts::table_key_type apply_context::get_key_type() { - return contracts::table_key_type::type_str; -} - -template<> -contracts::table_key_type apply_context::get_key_type() { - return contracts::table_key_type::type_i128i128; -} - -template<> -contracts::table_key_type apply_context::get_key_type() { - return contracts::table_key_type::type_i64i64; -} - -template<> -contracts::table_key_type apply_context::get_key_type() { - return contracts::table_key_type::type_i64i64i64; -} } } /// eosio::chain diff --git a/libraries/chain/chain_controller.cpp b/libraries/chain/chain_controller.cpp index df0b3f27fab6a536d40d9ab7d9fa18d1245baa0e..17842852e8abefbeda71d51bc0051a03aca1fdea 100644 --- a/libraries/chain/chain_controller.cpp +++ b/libraries/chain/chain_controller.cpp @@ -51,6 +51,7 @@ chain_controller::chain_controller( const chain_controller::controller_config& c (cfg.read_only ? database::read_only : database::read_write), cfg.shared_memory_size), _block_log(cfg.block_log_dir), + _wasm_interface(cfg.wasm_runtime), _limits(cfg.limits) { _initialize_indexes(); @@ -484,18 +485,17 @@ signed_block chain_controller::_generate_block( block_timestamp_type when, FC_ASSERT( producer_obj.signing_key == block_signing_key.get_public_key(), "producer key ${pk}, block key ${bk}", ("pk", producer_obj.signing_key)("bk", block_signing_key.get_public_key()) ); - _pending_block->timestamp = when; - _pending_block->producer = producer_obj.owner; - _pending_block->previous = head_block_id(); - _pending_block->block_mroot = get_dynamic_global_properties().block_merkle_root.get_root(); - _pending_block->transaction_mroot = transaction_metadata::calculate_transaction_merkle_root( _pending_transaction_metas ); - _pending_block->action_mroot = _pending_block_trace->calculate_action_merkle_root(); + _pending_block->timestamp = when; + _pending_block->producer = producer_obj.owner; + _pending_block->previous = head_block_id(); + _pending_block->block_mroot = get_dynamic_global_properties().block_merkle_root.get_root(); + _pending_block->transaction_mroot = transaction_metadata::calculate_transaction_merkle_root( _pending_transaction_metas ); + _pending_block->action_mroot = _pending_block_trace->calculate_action_merkle_root(); - if( is_start_of_round( _pending_block->block_num() ) ) { + if( is_start_of_round( _pending_block->block_num() ) ) { auto latest_producer_schedule = _calculate_producer_schedule(); if( latest_producer_schedule != _head_producer_schedule() ) _pending_block->new_producers = latest_producer_schedule; - } _pending_block->schedule_version = get_global_properties().active_producers.version; diff --git a/libraries/chain/contracts/eosio_contract.cpp b/libraries/chain/contracts/eosio_contract.cpp index 01a5c9509e499a11ba8fafd315cb5d6371eda903..618fc6bc79fda7a389f649a4ec8a1f34f305759a 100644 --- a/libraries/chain/contracts/eosio_contract.cpp +++ b/libraries/chain/contracts/eosio_contract.cpp @@ -47,6 +47,11 @@ void apply_eosio_newaccount(apply_context& context) { auto& db = context.mutable_db; + EOS_ASSERT( create.name.to_string().size() <= 12, action_validate_exception, "account names can only be 12 chars long" ); + if( !context.privileged ) { + EOS_ASSERT( name(create.name).to_string().find( "eosio." ) == std::string::npos, action_validate_exception, "only privileged accounts can have names that contain 'eosio.'" ); + } + auto existing_account = db.find(create.name); EOS_ASSERT(existing_account == nullptr, action_validate_exception, "Cannot create account named ${name}, as that name is already taken", @@ -90,9 +95,7 @@ void apply_eosio_setcode(apply_context& context) { auto code_id = fc::sha256::hash( act.code.data(), act.code.size() ); - // TODO: remove this compilation step in favor of validation without compilation - auto& code = context.mutable_controller.get_wasm_cache().checkout(code_id, act.code.data(), act.code.size()); - context.mutable_controller.get_wasm_cache().checkin(code_id, code); + wasm_interface::validate(act.code); const auto& account = db.get(act.account); // wlog( "set code: ${size}", ("size",act.code.size())); @@ -294,34 +297,36 @@ static const abi_serializer& get_abi_serializer() { } static optional get_pending_recovery(apply_context& context, account_name account ) { - const auto* t_id = context.find_table(config::system_account_name, account, N(recovery)); - if (t_id) { - uint64_t key = account; - int32_t record_size = context.front_record(*t_id, &key, nullptr, 0); - if (record_size > 0) { - bytes value(record_size + sizeof(uint64_t)); - uint64_t* key_p = reinterpret_cast(value.data()); - *key_p = key; - - record_size = context.front_record(*t_id, &key, value.data() + sizeof(uint64_t), value.size() - sizeof(uint64_t)); - assert(record_size == value.size() - sizeof(uint64_t)); - - return get_abi_serializer().binary_to_variant("pending_recovery", value); - } + const uint64_t id = account; + const auto table = N(recovery); + const auto iter = context.db_find_i64(config::system_account_name, account, table, id); + if (iter != -1) { + const auto buffer_size = context.db_get_i64(iter, nullptr, 0); + bytes value(buffer_size); + + assert(context.db_get_i64(iter, value.data(), buffer_size) == buffer_size); + + return get_abi_serializer().binary_to_variant("pending_recovery", value); } return optional(); } static uint32_t get_next_sender_id(apply_context& context) { - context.require_write_lock( config::eosio_auth_scope ); - const auto& t_id = context.find_or_create_table(config::system_account_name, config::eosio_auth_scope, N(deferred.seq)); - uint64_t key = N(config::eosio_auth_scope); - uint32_t next_serial = 0; - context.front_record(t_id, &key, (char *)&next_serial, sizeof(uint32_t)); + const uint64_t id = N(config::eosio_auth_scope); + const auto table = N(deferred.seq); + const auto payer = config::system_account_name; + const auto iter = context.db_find_i64(config::system_account_name, config::eosio_auth_scope, table, id); + if (iter == -1) { + const uint32_t next_serial = 1; + context.db_store_i64(config::eosio_auth_scope, table, payer, id, (const char*)&next_serial, sizeof(next_serial)); + return 0; + } - uint32_t result = next_serial++; - context.store_record(t_id, config::system_account_name, &key, (char *)&next_serial, sizeof(uint32_t)); + uint32_t next_serial = 0; + context.db_get_i64(iter, (char*)&next_serial, sizeof(next_serial)); + const auto result = next_serial++; + context.db_update_i64(iter, payer, (const char*)&next_serial, sizeof(next_serial)); return result; } @@ -408,16 +413,25 @@ void apply_eosio_postrecovery(apply_context& context) { context.execute_deferred(std::move(dtrx)); - const auto& t_id = context.find_or_create_table(config::system_account_name, account, N(recovery)); auto data = get_abi_serializer().variant_to_binary("pending_recovery", record_data); - context.store_record(t_id, 0, &account.value, data.data() + sizeof(uint64_t), data.size() - sizeof(uint64_t)); + const uint64_t id = account; + const uint64_t table = N(recovery); + const auto payer = account; + const auto iter = context.db_find_i64(config::system_account_name, account, table, id); + if (iter == -1) { + context.db_store_i64(account, table, payer, id, (const char*)data.data(), data.size()); + } else { + context.db_update_i64(iter, payer, (const char*)data.data(), data.size()); + } context.console_append_formatted("Recovery Started for account ${account} : ${memo}\n", mutable_variant_object()("account", account)("memo", recover_act.memo)); } static void remove_pending_recovery(apply_context& context, const account_name& account) { - const auto& t_id = context.find_or_create_table(config::system_account_name, account, N(recovery)); - context.remove_record(t_id, &account.value); + const auto iter = context.db_find_i64(config::system_account_name, account, N(recovery), account); + if (iter != -1) { + context.db_remove_i64(iter); + } } void apply_eosio_passrecovery(apply_context& context) { diff --git a/libraries/chain/include/eosio/chain/apply_context.hpp b/libraries/chain/include/eosio/chain/apply_context.hpp index 07ff64ff3f27bba133fb167a2f6c2c71d1fb1ce6..bf437d3c0633d48d6cafa281a04a94e04c5bab67 100644 --- a/libraries/chain/include/eosio/chain/apply_context.hpp +++ b/libraries/chain/include/eosio/chain/apply_context.hpp @@ -465,42 +465,6 @@ class apply_context { void execute_deferred( deferred_transaction &&trx ); void cancel_deferred( uint32_t sender_id ); - using table_id_object = contracts::table_id_object; - const table_id_object* find_table( name code, name scope, name table ); - const table_id_object& find_or_create_table( name code, name scope, name table ); - - template - int32_t store_record( const table_id_object& t_id, const account_name& bta, const typename ObjectType::key_type* keys, const char* value, size_t valuelen ); - - template - int32_t update_record( const table_id_object& t_id, const account_name& bta, const typename ObjectType::key_type* keys, const char* value, size_t valuelen ); - - template - int32_t remove_record( const table_id_object& t_id, const typename ObjectType::key_type* keys ); - - template - int32_t load_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ); - - - template - int32_t front_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ); - - template - int32_t back_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, - char* value, size_t valuelen ); - - template - int32_t next_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ); - - template - int32_t previous_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ); - - template - int32_t lower_bound_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ); - - template - int32_t upper_bound_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ); - /** * @brief Require @ref account to have approved of this message * @param account The account whose approval is required @@ -616,12 +580,9 @@ class apply_context { void exec_one(); - void validate_table_key( const table_id_object& t_id, contracts::table_key_type key_type ); - - void validate_or_add_table_key( const table_id_object& t_id, contracts::table_key_type key_type ); - - template - static contracts::table_key_type get_key_type(); + using table_id_object = contracts::table_id_object; + const table_id_object* find_table( name code, name scope, name table ); + const table_id_object& find_or_create_table( name code, name scope, name table ); vector _notified; ///< keeps track of new accounts to be notifed of current message vector _inline_actions; ///< queued inline messages @@ -792,280 +753,6 @@ using apply_handler = std::function; }; } - - - template - int32_t apply_context::store_record( const table_id_object& t_id, const account_name& bta, const typename ObjectType::key_type* keys, const char* value, size_t valuelen ) { - require_write_lock( t_id.scope ); - validate_or_add_table_key(t_id, get_key_type()); - - auto tuple = impl::exact_tuple::get(t_id, keys); - const auto* obj = db.find(tuple); - - if( obj ) { - mutable_db.modify( *obj, [&]( auto& o ) { - o.value.assign(value, valuelen); - }); - return 0; - } else { - mutable_db.create( [&](auto& o) { - o.t_id = t_id.id; - impl::key_helper::set(o, keys); - o.value.insert( 0, value, valuelen ); - }); - return 1; - } - } - - template - int32_t apply_context::update_record( const table_id_object& t_id, const account_name& bta, const typename ObjectType::key_type* keys, const char* value, size_t valuelen ) { - require_write_lock( t_id.scope ); - validate_or_add_table_key(t_id, get_key_type()); - - auto tuple = impl::exact_tuple::get(t_id, keys); - const auto* obj = db.find(tuple); - - if( !obj ) { - return 0; - } - - mutable_db.modify( *obj, [&]( auto& o ) { - if( valuelen > o.value.size() ) { - o.value.resize(valuelen); - } - memcpy(o.value.data(), value, valuelen); - }); - - return 1; - } - - template - int32_t apply_context::remove_record( const table_id_object& t_id, const typename ObjectType::key_type* keys ) { - require_write_lock( t_id.scope ); - validate_or_add_table_key(t_id, get_key_type()); - - auto tuple = impl::exact_tuple::get(t_id, keys); - const auto* obj = db.find(tuple); - if( obj ) { - mutable_db.remove( *obj ); - return 1; - } - return 0; - } - - template - int32_t apply_context::load_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& idx = db.get_index(); - auto tuple = impl::partial_tuple::get(t_id, keys); - auto itr = idx.lower_bound(tuple); - - if( itr == idx.end() || - itr->t_id != t_id.id || - !impl::record_scope_compare::compare(*itr, keys)) return -1; - - impl::key_helper::get(keys, *itr); - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - - template - int32_t apply_context::front_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& idx = db.get_index(); - auto tuple = impl::front_record_tuple::get(t_id); - - auto itr = idx.lower_bound( tuple ); - if( itr == idx.end() || - itr->t_id != t_id.id ) return -1; - - impl::key_helper::get(keys, *itr); - - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - - template - int32_t apply_context::back_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& idx = db.get_index(); - decltype(t_id.id) next_tid(t_id.id._id + 1); - auto tuple = boost::make_tuple( next_tid ); - auto itr = idx.lower_bound(tuple); - - if( std::distance(idx.begin(), itr) == 0 ) return -1; - - --itr; - - if( itr->t_id != t_id.id ) return -1; - - impl::key_helper::get(keys, *itr); - - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - - template - int32_t apply_context::next_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& pidx = db.get_index(); - - auto tuple = impl::exact_tuple::get(t_id, keys); - auto pitr = pidx.find(tuple); - - if(pitr == pidx.end()) - return -1; - - const auto& fidx = db.get_index(); - auto itr = fidx.indicies().template project(pitr); - - const auto& idx = db.get_index(); - - if( itr == idx.end() || - itr->t_id != t_id.id || - !impl::key_helper::compare(*itr, keys) ) { - return -1; - } - - ++itr; - - if( itr == idx.end() || - itr->t_id != t_id.id ) { - return -1; - } - - impl::key_helper::get(keys, *itr); - - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - - template - int32_t apply_context::previous_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& pidx = db.get_index(); - - auto tuple = impl::exact_tuple::get(t_id, keys); - auto pitr = pidx.find(tuple); - - if(pitr == pidx.end()) - return 0; - - const auto& fidx = db.get_index(); - auto itr = fidx.indicies().template project(pitr); - - const auto& idx = db.get_index(); - - if( itr == idx.end() || - itr == idx.begin() || - itr->t_id != t_id.id || - !impl::key_helper::compare(*itr, keys) ) return 0; - - --itr; - - if( itr->t_id != t_id.id ) return 0; - - impl::key_helper::get(keys, *itr); - - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - - template - int32_t apply_context::lower_bound_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& idx = db.get_index(); - auto tuple = impl::partial_tuple::get(t_id, keys); - auto itr = idx.lower_bound(tuple); - - if( itr == idx.end() || - itr->t_id != t_id.id) return 0; - - impl::key_helper::get(keys, *itr); - - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - - template - int32_t apply_context::upper_bound_record( const table_id_object& t_id, typename IndexType::value_type::key_type* keys, char* value, size_t valuelen ) { - require_read_lock( t_id.code, t_id.scope ); - validate_table_key(t_id, get_key_type()); - - const auto& idx = db.get_index(); - auto tuple = impl::partial_tuple::get(t_id, keys); - auto itr = idx.upper_bound(tuple); - - if( itr == idx.end() || - itr->t_id != t_id.id ) return 0; - - impl::key_helper::get(keys, *itr); - - if (valuelen) { - auto copylen = std::min(itr->value.size(), valuelen); - if (copylen) { - itr->value.copy(value, copylen); - } - return copylen; - } else { - return itr->value.size(); - } - } - } } // namespace eosio::chain FC_REFLECT(eosio::chain::apply_context::apply_results, (applied_actions)(generated_transactions)) diff --git a/libraries/chain/include/eosio/chain/block.hpp b/libraries/chain/include/eosio/chain/block.hpp index 20d75e218ffd6bd887877a230dca52d952402597..79e421c38a85a9ebd483e1f5cff5d4ddcd1ca16b 100644 --- a/libraries/chain/include/eosio/chain/block.hpp +++ b/libraries/chain/include/eosio/chain/block.hpp @@ -15,33 +15,20 @@ namespace eosio { namespace chain { uint32_t block_num() const { return num_from_id(previous) + 1; } static uint32_t num_from_id(const block_id_type& id); - block_id_type previous; - block_timestamp_type timestamp; + block_id_type previous; + block_timestamp_type timestamp; checksum256_type transaction_mroot; /// mroot of cycles_summary checksum256_type action_mroot; checksum256_type block_mroot; - account_name producer; + account_name producer; /** The producer schedule version that should validate this block, this is used to * indicate that the prior block which included new_producers->version has been marked * irreversible and that it the new producer schedule takes effect this block. */ - uint32_t schedule_version = 0; - - /** - * The changes in the round of producers after this block - * - * Must be stored with keys *and* values sorted, thus this is a valid RoundChanges: - * [["A", "X"], - * ["B", "Y"]] - * ... whereas this is not: - * [["A", "Y"], - * ["B", "X"]] - * Even though the above examples are semantically equivalent (replace A and B with X and Y), only the first is - * legal. - */ + uint32_t schedule_version = 0; optional new_producers; }; diff --git a/libraries/chain/include/eosio/chain/chain_controller.hpp b/libraries/chain/include/eosio/chain/chain_controller.hpp index 7a0dcda40f21ff5d93cd5fa1d503cef0fc98ecf0..835ade429b83293fccd8ef4dca2814598f5d6379 100644 --- a/libraries/chain/include/eosio/chain/chain_controller.hpp +++ b/libraries/chain/include/eosio/chain/chain_controller.hpp @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -77,6 +78,7 @@ namespace eosio { namespace chain { std::vector::slot_type> on_pending_transaction_callbacks; contracts::genesis_state_type genesis; runtime_limits limits; + wasm_interface::vm_type wasm_runtime = config::default_wasm_runtime; }; explicit chain_controller( const controller_config& cfg ); @@ -271,11 +273,10 @@ namespace eosio { namespace chain { const chainbase::database& get_database() const { return _db; } chainbase::database& get_mutable_database() { return _db; } - wasm_cache& get_wasm_cache() { - return _wasm_cache; + wasm_interface& get_wasm_interface() { + return _wasm_interface; } - /** * @param actions - the actions to check authorization across * @param provided_keys - the set of public keys which have authorized the transaction @@ -429,7 +430,7 @@ namespace eosio { namespace chain { typedef pair handler_key; map< account_name, map > _apply_handlers; - wasm_cache _wasm_cache; + wasm_interface _wasm_interface; runtime_limits _limits; }; diff --git a/libraries/chain/include/eosio/chain/config.hpp b/libraries/chain/include/eosio/chain/config.hpp index 80aaadd82fc40afcff413ffe7ab6663d21488790..d7c66678b982e3325a007eb8e6bd6bd041d8a904 100644 --- a/libraries/chain/include/eosio/chain/config.hpp +++ b/libraries/chain/include/eosio/chain/config.hpp @@ -4,6 +4,7 @@ */ #pragma once #include +#include #include #pragma GCC diagnostic ignored "-Wunused-variable" @@ -64,6 +65,8 @@ const static uint32_t rate_limiting_precision = 1000*1000; const static uint16_t max_recursion_depth = 6; +const static eosio::chain::wasm_interface::vm_type default_wasm_runtime = eosio::chain::wasm_interface::vm_type::binaryen; + /** * The number of sequential blocks produced by a single producer */ diff --git a/libraries/chain/include/eosio/chain/contracts/contract_table_objects.hpp b/libraries/chain/include/eosio/chain/contracts/contract_table_objects.hpp index 8c4f4c0111e191e8e39c69baab9ab05b24a7baed..80a54cc3212414e093e80b9e09c167604c4e03ab 100644 --- a/libraries/chain/include/eosio/chain/contracts/contract_table_objects.hpp +++ b/libraries/chain/include/eosio/chain/contracts/contract_table_objects.hpp @@ -15,15 +15,6 @@ namespace eosio { namespace chain { namespace contracts { - enum table_key_type { - type_unassigned, - type_i64, - type_str, - type_i128i128, - type_i64i64, - type_i64i64i64 - }; - /** * @brief The table_id_object class tracks the mapping of (scope, code, table) to an opaque identifier */ @@ -35,7 +26,6 @@ namespace eosio { namespace chain { namespace contracts { scope_name scope; table_name table; uint32_t count = 0; /// the number of elements in the table - table_key_type key_type = type_unassigned; }; struct by_code_scope_table; @@ -405,7 +395,7 @@ CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::index128_object, eosio::chain: CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::index256_object, eosio::chain::contracts::index256_index) CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::index_double_object, eosio::chain::contracts::index_double_index) -FC_REFLECT(eosio::chain::contracts::table_id_object, (id)(code)(scope)(table)(key_type) ) +FC_REFLECT(eosio::chain::contracts::table_id_object, (id)(code)(scope)(table) ) FC_REFLECT(eosio::chain::contracts::key_value_object, (id)(t_id)(primary_key)(value)(payer) ) FC_REFLECT(eosio::chain::contracts::keystr_value_object, (id)(t_id)(primary_key)(value)(payer) ) FC_REFLECT(eosio::chain::contracts::key128x128_value_object, (id)(t_id)(primary_key)(secondary_key)(value)(payer) ) diff --git a/libraries/chain/include/eosio/chain/contracts/types.hpp b/libraries/chain/include/eosio/chain/contracts/types.hpp index 3199d8eb9239b1cf9ffbc31cf3bc786217248a93..d05b639037971275097fbb3fde1f98650cfb6588 100644 --- a/libraries/chain/include/eosio/chain/contracts/types.hpp +++ b/libraries/chain/include/eosio/chain/contracts/types.hpp @@ -13,8 +13,6 @@ using namespace boost::multiprecision; template using uint_t = number >; -template -using int_t = number >; using uint8 = uint_t<8>; using uint16 = uint_t<16>; diff --git a/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp b/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp index fb86ec1630dc4738008084aa57f2a97f72dfe2c4..c42ed0c35cc8760afe1e061d73c5b06a2fe873a3 100644 --- a/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp +++ b/libraries/chain/include/eosio/chain/wasm_eosio_binary_ops.hpp @@ -571,7 +571,6 @@ BOOST_PP_SEQ_FOR_EACH( CONSTRUCT_OP_HAS_DATA, uint32_t, BOOST_PP_SEQ_SUB BOOST_PP_SEQ_FOR_EACH( CONSTRUCT_OP_HAS_DATA, memarg, BOOST_PP_SEQ_SUBSEQ( WASM_OP_SEQ, 147, 23 ) ) BOOST_PP_SEQ_FOR_EACH( CONSTRUCT_OP_HAS_DATA, uint64_t, BOOST_PP_SEQ_SUBSEQ( WASM_OP_SEQ, 170, 2 ) ) BOOST_PP_SEQ_FOR_EACH( CONSTRUCT_OP_HAS_DATA, branchtabletype, BOOST_PP_SEQ_SUBSEQ( WASM_OP_SEQ, 172, 1 ) ) -// NOTE BRANCH TABLE IS OMITTED #undef CONSTRUCT_OP_HAS_DATA #pragma pack (pop) diff --git a/libraries/chain/include/eosio/chain/wasm_eosio_constraints.hpp b/libraries/chain/include/eosio/chain/wasm_eosio_constraints.hpp index f91f5a7f98cfeba1c2fb533062c27428e86a13a8..3bb69d9743f00360202c0e3dc7ec61df37168840 100644 --- a/libraries/chain/include/eosio/chain/wasm_eosio_constraints.hpp +++ b/libraries/chain/include/eosio/chain/wasm_eosio_constraints.hpp @@ -8,10 +8,11 @@ namespace IR { } namespace eosio { namespace chain { namespace wasm_constraints { - constexpr unsigned maximum_linear_memory = 2*1024*1024;//bytes + constexpr unsigned maximum_linear_memory = 33*1024*1024;//bytes constexpr unsigned maximum_mutable_globals = 1024; //bytes constexpr unsigned maximum_table_elements = 1024; //elements constexpr unsigned maximum_linear_memory_init = 64*1024; //bytes + constexpr unsigned maximum_func_local_bytes = 8192; //bytes static constexpr unsigned wasm_page_size = 64*1024; @@ -19,6 +20,8 @@ namespace eosio { namespace chain { namespace wasm_constraints { static_assert(maximum_mutable_globals%4 == 0, "maximum_mutable_globals must be mulitple of 4"); static_assert(maximum_table_elements*8%4096 == 0, "maximum_table_elements*8 must be mulitple of 4096"); static_assert(maximum_linear_memory_init%wasm_page_size == 0, "maximum_linear_memory_init must be mulitple of wasm page size"); + static_assert(maximum_func_local_bytes%8 == 0, "maximum_func_local_bytes must be mulitple of 8"); + static_assert(maximum_func_local_bytes>32 , "maximum_func_local_bytes must be greater than 32"); } // namespace wasm_constraints }} // namespace eosio, chain diff --git a/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp b/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp index 114b1c2da89fbd7a3dd105b3159dedbd6155c22e..4b77ef4c4a21a28c5c865b3d6e0ce9a171f492c1 100644 --- a/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp +++ b/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp @@ -2,8 +2,10 @@ #include #include +#include #include #include +#include #include #include #include "IR/Module.h" @@ -58,7 +60,7 @@ namespace eosio { namespace chain { namespace wasm_injections { if ( exp.kind == IR::ObjectKind::function ) exports++; - uint32_t next_index = module.functions.imports.size() + module.functions.defs.size() + exports + registered_injected.size(); + uint32_t next_index = module.functions.imports.size() + module.functions.defs.size() + exports + registered_injected.size()-1; return next_index; } @@ -66,7 +68,6 @@ namespace eosio { namespace chain { namespace wasm_injections { static void add_import(Module& module, const char* scope, const char* func_name, int32_t& index ) { if (module.functions.imports.size() == 0 || registered_injected.find(func_name) == registered_injected.end() ) { add_type_slot( module ); - const uint32_t func_type_index = type_slots[{ FromResultType::value, FromValueType::value... }]; uint32_t next_index = get_next_index( module ); registered_injected.emplace( func_name, next_index ); @@ -80,6 +81,9 @@ namespace eosio { namespace chain { namespace wasm_injections { module.exports[i].index += 1; } } + else { + index = registered_injected[func_name]; + } } }; @@ -87,29 +91,8 @@ namespace eosio { namespace chain { namespace wasm_injections { static void inject( IR::Module& m ); static void initializer(); }; - - - struct memories_injection_visitor { - static void inject( IR::Module& m ); - static void initializer(); - }; - struct data_segments_injection_visitor { - static void inject( IR::Module& m ); - static void initializer(); - }; - - struct tables_injection_visitor { - static void inject( IR::Module& m ); - static void initializer(); - }; - - struct globals_injection_visitor { - static void inject( IR::Module& m ); - static void initializer(); - }; - - struct blacklist_injection_visitor { + struct max_memory_injection_visitor { static void inject( IR::Module& m ); static void initializer(); }; @@ -189,21 +172,334 @@ namespace eosio { namespace chain { namespace wasm_injections { }; // float injections - struct f32_add_injector { + constexpr const char* inject_which_op( uint16_t opcode ) { + switch ( opcode ) { + case wasm_ops::f32_add_code: + return u8"_eosio_f32_add"; + case wasm_ops::f32_sub_code: + return u8"_eosio_f32_sub"; + case wasm_ops::f32_mul_code: + return u8"_eosio_f32_mul"; + case wasm_ops::f32_div_code: + return u8"_eosio_f32_div"; + case wasm_ops::f32_min_code: + return u8"_eosio_f32_min"; + case wasm_ops::f32_max_code: + return u8"_eosio_f32_max"; + case wasm_ops::f32_copysign_code: + return u8"_eosio_f32_copysign"; + case wasm_ops::f32_abs_code: + return u8"_eosio_f32_abs"; + case wasm_ops::f32_neg_code: + return u8"_eosio_f32_neg"; + case wasm_ops::f32_sqrt_code: + return u8"_eosio_f32_sqrt"; + case wasm_ops::f32_ceil_code: + return u8"_eosio_f32_ceil"; + case wasm_ops::f32_floor_code: + return u8"_eosio_f32_floor"; + case wasm_ops::f32_trunc_code: + return u8"_eosio_f32_trunc"; + case wasm_ops::f32_nearest_code: + return u8"_eosio_f32_nearest"; + case wasm_ops::f32_eq_code: + return u8"_eosio_f32_eq"; + case wasm_ops::f32_ne_code: + return u8"_eosio_f32_ne"; + case wasm_ops::f32_lt_code: + return u8"_eosio_f32_lt"; + case wasm_ops::f32_le_code: + return u8"_eosio_f32_le"; + case wasm_ops::f32_gt_code: + return u8"_eosio_f32_gt"; + case wasm_ops::f32_ge_code: + return u8"_eosio_f32_ge"; + case wasm_ops::f64_add_code: + return u8"_eosio_f64_add"; + case wasm_ops::f64_sub_code: + return u8"_eosio_f64_sub"; + case wasm_ops::f64_mul_code: + return u8"_eosio_f64_mul"; + case wasm_ops::f64_div_code: + return u8"_eosio_f64_div"; + case wasm_ops::f64_min_code: + return u8"_eosio_f64_min"; + case wasm_ops::f64_max_code: + return u8"_eosio_f64_max"; + case wasm_ops::f64_copysign_code: + return u8"_eosio_f64_copysign"; + case wasm_ops::f64_abs_code: + return u8"_eosio_f64_abs"; + case wasm_ops::f64_neg_code: + return u8"_eosio_f64_neg"; + case wasm_ops::f64_sqrt_code: + return u8"_eosio_f64_sqrt"; + case wasm_ops::f64_ceil_code: + return u8"_eosio_f64_ceil"; + case wasm_ops::f64_floor_code: + return u8"_eosio_f64_floor"; + case wasm_ops::f64_trunc_code: + return u8"_eosio_f64_trunc"; + case wasm_ops::f64_nearest_code: + return u8"_eosio_f64_nearest"; + case wasm_ops::f64_eq_code: + return u8"_eosio_f64_eq"; + case wasm_ops::f64_ne_code: + return u8"_eosio_f64_ne"; + case wasm_ops::f64_lt_code: + return u8"_eosio_f64_lt"; + case wasm_ops::f64_le_code: + return u8"_eosio_f64_le"; + case wasm_ops::f64_gt_code: + return u8"_eosio_f64_gt"; + case wasm_ops::f64_ge_code: + return u8"_eosio_f64_ge"; + case wasm_ops::f64_promote_f32_code: + return u8"_eosio_f32_promote"; + case wasm_ops::f32_demote_f64_code: + return u8"_eosio_f64_demote"; + case wasm_ops::i32_trunc_u_f32_code: + return u8"_eosio_f32_trunc_i32u"; + case wasm_ops::i32_trunc_s_f32_code: + return u8"_eosio_f32_trunc_i32s"; + case wasm_ops::i32_trunc_u_f64_code: + return u8"_eosio_f64_trunc_i32u"; + case wasm_ops::i32_trunc_s_f64_code: + return u8"_eosio_f64_trunc_i32s"; + case wasm_ops::i64_trunc_u_f32_code: + return u8"_eosio_f32_trunc_i64u"; + case wasm_ops::i64_trunc_s_f32_code: + return u8"_eosio_f32_trunc_i64s"; + case wasm_ops::i64_trunc_u_f64_code: + return u8"_eosio_f64_trunc_i64u"; + case wasm_ops::i64_trunc_s_f64_code: + return u8"_eosio_f64_trunc_i64s"; + case wasm_ops::f32_convert_s_i32_code: + return u8"_eosio_i32_to_f32"; + case wasm_ops::f32_convert_u_i32_code: + return u8"_eosio_ui32_to_f32"; + case wasm_ops::f32_convert_s_i64_code: + return u8"_eosio_i64_f32"; + case wasm_ops::f32_convert_u_i64_code: + return u8"_eosio_ui64_to_f32"; + case wasm_ops::f64_convert_s_i32_code: + return u8"_eosio_i32_to_f64"; + case wasm_ops::f64_convert_u_i32_code: + return u8"_eosio_ui32_to_f64"; + case wasm_ops::f64_convert_s_i64_code: + return u8"_eosio_i64_to_f64"; + case wasm_ops::f64_convert_u_i64_code: + return u8"_eosio_ui64_to_f64"; + + default: + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, unknown opcode in injection ${op}", ("op", opcode)); + } + } + + template + struct f32_binop_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + + template + struct f32_unop_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + + template + struct f32_relop_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct f64_binop_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f64op; + f64op.field = idx; + std::vector injected = f64op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + + template + struct f64_unop_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f64op; + f64op.field = idx; + std::vector injected = f64op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + + template + struct f64_relop_injector { static constexpr bool kills = true; static constexpr bool post = false; static void init() {} static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { int32_t idx; - injector_utils::add_import( *(arg.module), u8"env", u8"f32_add", idx ); - wasm_ops::op_types<>::call_t f32add; - f32add.field = idx; - std::vector injected = f32add.pack(); + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f64op; + f64op.field = idx; + std::vector injected = f64op.pack(); arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); } }; + + template + struct f32_trunc_i32_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct f32_trunc_i64_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct f64_trunc_i32_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct f64_trunc_i64_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct i32_convert_f32_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct i64_convert_f32_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f32op; + f32op.field = idx; + std::vector injected = f32op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct i32_convert_f64_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f64op; + f64op.field = idx; + std::vector injected = f64op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + template + struct i64_convert_f64_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", inject_which_op(Opcode), idx ); + wasm_ops::op_types<>::call_t f64op; + f64op.field = idx; + std::vector injected = f64op.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; + struct f32_promote_injector { - static constexpr bool kills = false; + static constexpr bool kills = true; static constexpr bool post = false; static void init() {} static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { @@ -215,6 +511,20 @@ namespace eosio { namespace chain { namespace wasm_injections { arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); } }; + + struct f64_demote_injector { + static constexpr bool kills = true; + static constexpr bool post = false; + static void init() {} + static void accept( wasm_ops::instr* inst, wasm_ops::visitor_arg& arg ) { + int32_t idx; + injector_utils::add_import( *(arg.module), u8"env", u8"_eosio_f64_demote", idx ); + wasm_ops::op_types<>::call_t f32promote; + f32promote.field = idx; + std::vector injected = f32promote.pack(); + arg.new_code->insert( arg.new_code->end(), injected.begin(), injected.end() ); + } + }; struct pre_op_injectors : wasm_ops::op_types { using block_t = wasm_ops::block ; @@ -332,11 +642,82 @@ namespace eosio { namespace chain { namespace wasm_injections { using i64_shr_u_t = wasm_ops::i64_shr_u ; using i64_rotl_t = wasm_ops::i64_rotl ; using i64_rotr_t = wasm_ops::i64_rotr ; + + // float binops + using f32_add_t = wasm_ops::f32_add >; + using f32_sub_t = wasm_ops::f32_sub >; + using f32_div_t = wasm_ops::f32_div >; + using f32_mul_t = wasm_ops::f32_mul >; + using f32_min_t = wasm_ops::f32_min >; + using f32_max_t = wasm_ops::f32_max >; + using f32_copysign_t = wasm_ops::f32_copysign >; + // float unops + using f32_abs_t = wasm_ops::f32_abs >; + using f32_neg_t = wasm_ops::f32_neg >; + using f32_sqrt_t = wasm_ops::f32_sqrt >; + using f32_floor_t = wasm_ops::f32_floor >; + using f32_ceil_t = wasm_ops::f32_ceil >; + using f32_trunc_t = wasm_ops::f32_trunc >; + using f32_nearest_t = wasm_ops::f32_nearest >; + // float relops + using f32_eq_t = wasm_ops::f32_eq >; + using f32_ne_t = wasm_ops::f32_ne >; + using f32_lt_t = wasm_ops::f32_lt >; + using f32_le_t = wasm_ops::f32_le >; + using f32_gt_t = wasm_ops::f32_gt >; + using f32_ge_t = wasm_ops::f32_ge >; + + // float binops + using f64_add_t = wasm_ops::f64_add >; + using f64_sub_t = wasm_ops::f64_sub >; + using f64_div_t = wasm_ops::f64_div >; + using f64_mul_t = wasm_ops::f64_mul >; + using f64_min_t = wasm_ops::f64_min >; + using f64_max_t = wasm_ops::f64_max >; + using f64_copysign_t = wasm_ops::f64_copysign >; + // float unops + using f64_abs_t = wasm_ops::f64_abs >; + using f64_neg_t = wasm_ops::f64_neg >; + using f64_sqrt_t = wasm_ops::f64_sqrt >; + using f64_floor_t = wasm_ops::f64_floor >; + using f64_ceil_t = wasm_ops::f64_ceil >; + using f64_trunc_t = wasm_ops::f64_trunc >; + using f64_nearest_t = wasm_ops::f64_nearest >; + // float relops + using f64_eq_t = wasm_ops::f64_eq >; + using f64_ne_t = wasm_ops::f64_ne >; + using f64_lt_t = wasm_ops::f64_lt >; + using f64_le_t = wasm_ops::f64_le >; + using f64_gt_t = wasm_ops::f64_gt >; + using f64_ge_t = wasm_ops::f64_ge >; + + + using f64_promote_f32_t = wasm_ops::f64_promote_f32 ; + using f32_demote_f64_t = wasm_ops::f32_demote_f64 ; - using i32_wrap_i64_t = wasm_ops::i32_wrap_i64 ; + + using i32_trunc_s_f32_t = wasm_ops::i32_trunc_s_f32 >; + using i32_trunc_u_f32_t = wasm_ops::i32_trunc_u_f32 >; + using i32_trunc_s_f64_t = wasm_ops::i32_trunc_s_f64 >; + using i32_trunc_u_f64_t = wasm_ops::i32_trunc_u_f64 >; + using i64_trunc_s_f32_t = wasm_ops::i64_trunc_s_f32 >; + using i64_trunc_u_f32_t = wasm_ops::i64_trunc_u_f32 >; + using i64_trunc_s_f64_t = wasm_ops::i64_trunc_s_f64 >; + using i64_trunc_u_f64_t = wasm_ops::i64_trunc_u_f64 >; + + using f32_convert_s_i32 = wasm_ops::f32_convert_s_i32 >; + using f32_convert_s_i64 = wasm_ops::f32_convert_s_i64 >; + using f32_convert_u_i32 = wasm_ops::f32_convert_u_i32 >; + using f32_convert_u_i64 = wasm_ops::f32_convert_u_i64 >; + using f64_convert_s_i32 = wasm_ops::f64_convert_s_i32 >; + using f64_convert_s_i64 = wasm_ops::f64_convert_s_i64 >; + using f64_convert_u_i32 = wasm_ops::f64_convert_u_i32 >; + using f64_convert_u_i64 = wasm_ops::f64_convert_u_i64 >; + + using i32_wrap_i64_t = wasm_ops::i32_wrap_i64 ; using i64_extend_s_i32_t = wasm_ops::i64_extend_s_i32 ; using i64_extend_u_i32_t = wasm_ops::i64_extend_u_i32 ; - // todo, make sure these are just pointer reinterprets + using i32_reinterpret_f32_t = wasm_ops::i32_reinterpret_f32 ; using f32_reinterpret_i32_t = wasm_ops::f32_reinterpret_i32 ; using i64_reinterpret_f64_t = wasm_ops::i64_reinterpret_f64 ; @@ -344,9 +725,10 @@ namespace eosio { namespace chain { namespace wasm_injections { }; // pre_op_injectors + struct post_op_injectors : wasm_ops::op_types { using call_t = wasm_ops::call ; - }; // post_op_injectors + }; template struct module_injectors { @@ -365,7 +747,7 @@ namespace eosio { namespace chain { namespace wasm_injections { // inherit from this class and define your own injectors class wasm_binary_injection { - using standard_module_injectors = module_injectors< noop_injection_visitor >; + using standard_module_injectors = module_injectors< noop_injection_visitor, max_memory_injection_visitor >; public: wasm_binary_injection( IR::Module& mod ) : _module( &mod ) { diff --git a/libraries/chain/include/eosio/chain/wasm_eosio_validation.hpp b/libraries/chain/include/eosio/chain/wasm_eosio_validation.hpp index e557af7083e248e1a32311386521b75832cd22b7..cebe1331be51e2021f71aa64f4179e1d06e2e56c 100644 --- a/libraries/chain/include/eosio/chain/wasm_eosio_validation.hpp +++ b/libraries/chain/include/eosio/chain/wasm_eosio_validation.hpp @@ -34,6 +34,14 @@ namespace eosio { namespace chain { namespace wasm_validations { static void validate( const IR::Module& m ); }; + struct maximum_function_stack_visitor { + static void validate( const IR::Module& m ); + }; + + struct ensure_apply_exported_visitor { + static void validate( const IR::Module& m ); + }; + using wasm_validate_func = std::function; @@ -115,6 +123,9 @@ namespace eosio { namespace chain { namespace wasm_validations { using get_global_t = wasm_ops::get_global ; using set_global_t = wasm_ops::set_global ; + using grow_memory_t = wasm_ops::grow_memory ; + using current_memory_t = wasm_ops::current_memory ; + using nop_t = wasm_ops::nop ; using i32_load_t = wasm_ops::i32_load ; using i64_load_t = wasm_ops::i64_load ; @@ -295,7 +306,9 @@ namespace eosio { namespace chain { namespace wasm_validations { using standard_module_constraints_validators = constraints_validators< memories_validation_visitor, data_segments_validation_visitor, tables_validation_visitor, - globals_validation_visitor>; + globals_validation_visitor, + maximum_function_stack_visitor, + ensure_apply_exported_visitor>; public: wasm_binary_validation( IR::Module& mod ) : _module( &mod ) { // initialize validators here diff --git a/libraries/chain/include/eosio/chain/wasm_interface.hpp b/libraries/chain/include/eosio/chain/wasm_interface.hpp index 310c4c56bd35df2b5c9dbfcc6679ec07bd243b23..df76c4f01294cd3b4a047dd415c200e3111d40a4 100644 --- a/libraries/chain/include/eosio/chain/wasm_interface.hpp +++ b/libraries/chain/include/eosio/chain/wasm_interface.hpp @@ -1,99 +1,40 @@ #pragma once -#include #include +#include "Runtime/Linker.h" +#include "Runtime/Runtime.h" namespace eosio { namespace chain { class apply_context; + class wasm_runtime_interface; + + struct wasm_exit { + int32_t code = 0; + }; namespace webassembly { namespace common { class intrinsics_accessor; - } } - - /** - * @class wasm_cache - * - * This class manages compilation, re-use and memory sanitation for WASM contracts - * As the same code can be running on many threads in parallel, some contracts will have multiple - * copies. - */ - class wasm_cache { - public: - wasm_cache(); - ~wasm_cache(); - - /** - * an opaque code entry used in the wasm_interface class - */ - struct entry; - - /** - * Checkout the desired code from the cache. Code is idenfied via a digest of the wasm binary - * - * @param code_id - a digest of the wasm_binary bytes - * @param wasm_binary - a pointer to the wasm_binary bytes - * @param wasm_binary_size - the size of the wasm_binary bytes array - * @return an entry which can be immediately used by the wasm_interface to execute contract code - */ - entry &checkout( const digest_type& code_id, const char* wasm_binary, size_t wasm_binary_size ); - - /** - * Return an entry to the cache so that future checkouts may retrieve it - * - * @param code_id - a digest of the wasm_binary bytes - * @param code - the entry which should be considered invalid post-call - */ - void checkin( const digest_type& code_id, entry& code ); - /** - * RAII wrapper to make sure that the cache entries are returned regardless of exceptions etc - */ - struct scoped_entry { - explicit scoped_entry(const digest_type& code_id, entry& code, wasm_cache& cache) - :code_id(code_id) - ,code(code) - ,cache(cache) - {} - - ~scoped_entry() { - cache.checkin(code_id, code); - } - - operator entry&() { - return code; - } - - digest_type code_id; - entry& code; - wasm_cache& cache; - }; - - /** - * Checkout the desired code from the cache. Code is idenfied via a digest of the wasm binary - * this method will wrap the code in an RAII construct so that it will automatically - * return to the cache when it falls out of scope - * - * @param code_id - a digest of the wasm_binary bytes - * @param wasm_binary - a pointer to the wasm_binary bytes - * @param wasm_binary_size - the size of the wasm_binary bytes array - * @return an entry which can be immediately used by the wasm_interface to execute contract code - */ - scoped_entry checkout_scoped(const digest_type& code_id, const char* wasm_binary, size_t wasm_binary_size) { - return scoped_entry(code_id, checkout(code_id, wasm_binary, wasm_binary_size), *this); + struct root_resolver : Runtime::Resolver { + bool resolve(const string& mod_name, + const string& export_name, + IR::ObjectType type, + Runtime::ObjectInstance*& out) override { + try { + // Try to resolve an intrinsic first. + if(Runtime::IntrinsicResolver::singleton.resolve(mod_name,export_name,type, out)) { + return true; } - - private: - unique_ptr _my; - }; + FC_ASSERT( !"unresolvable", "${module}.${export}", ("module",mod_name)("export",export_name) ); + return false; + } FC_CAPTURE_AND_RETHROW( (mod_name)(export_name) ) } + }; + } } /** * @class wasm_interface * - * EOS.IO uses the wasm-jit library to evaluate web assembly code. This library relies - * upon a singlton thread-local interface which means there can be only one instance - * per thread. - * */ class wasm_interface { public: @@ -102,19 +43,14 @@ namespace eosio { namespace chain { binaryen, }; - static wasm_interface& get(); + wasm_interface(vm_type vm); + ~wasm_interface(); - /** - * Calls the apply an action through the given code - * - * @param context - the interface by which the contract can interact - * with blockchain state. - */ - void apply( wasm_cache::entry& code, apply_context& context, vm_type vm = vm_type::wavm ); + //validates code -- does a WASM validation pass and checks the wasm against EOSIO specific constraints + static void validate(const bytes& code); - /** - */ - void error( wasm_cache::entry& code, apply_context& context, vm_type vm = vm_type::wavm ); + //Calls apply or error on a given code + void apply(const digest_type& code_id, const shared_vector& code, apply_context& context); private: wasm_interface(); @@ -123,3 +59,7 @@ namespace eosio { namespace chain { }; } } // eosio::chain + +namespace eosio{ namespace chain { + std::istream& operator>>(std::istream& in, wasm_interface::vm_type& runtime); +}} \ No newline at end of file diff --git a/libraries/chain/include/eosio/chain/wasm_interface_private.hpp b/libraries/chain/include/eosio/chain/wasm_interface_private.hpp index aeaf0b085f742f4e13d49bdb40011f5173d67bfc..b88d34062380aaf68b5b1a8c9bbf681047e398d5 100644 --- a/libraries/chain/include/eosio/chain/wasm_interface_private.hpp +++ b/libraries/chain/include/eosio/chain/wasm_interface_private.hpp @@ -3,25 +3,71 @@ #include #include #include +#include +#include + +#include "IR/Module.h" +#include "Runtime/Intrinsics.h" +#include "Platform/Platform.h" +#include "WAST/WAST.h" +#include "IR/Validate.h" using namespace fc; using namespace eosio::chain::webassembly; +using namespace IR; +using namespace Runtime; namespace eosio { namespace chain { - struct wasm_cache::entry { - entry(wavm::entry&& wavm, binaryen::entry&& binaryen) - : wavm(std::forward(wavm)) - , binaryen(std::forward(binaryen)) - { + struct wasm_interface_impl { + wasm_interface_impl(wasm_interface::vm_type vm) { + if(vm == wasm_interface::vm_type::wavm) + runtime_interface = std::make_unique(); + else if(vm == wasm_interface::vm_type::binaryen) + runtime_interface = std::make_unique(); + else + FC_THROW("wasm_interface_impl fall through"); + } + + std::vector parse_initial_memory(const Module& module) { + std::vector mem_image; + + for(const DataSegment& data_segment : module.dataSegments) { + FC_ASSERT(data_segment.baseOffset.type == InitializerExpression::Type::i32_const); + FC_ASSERT(module.memories.defs.size()); + const U32 base_offset = data_segment.baseOffset.i32; + const Uptr memory_size = (module.memories.defs[0].type.size.min << IR::numBytesPerPageLog2); + if(base_offset >= memory_size || base_offset + data_segment.data.size() > memory_size) + FC_THROW_EXCEPTION(wasm_execution_error, "WASM data segment outside of valid memory range"); + if(base_offset + data_segment.data.size() > mem_image.size()) + mem_image.resize(base_offset + data_segment.data.size(), 0x00); + memcpy(mem_image.data() + base_offset, data_segment.data.data(), data_segment.data.size()); + } + + return mem_image; } - wavm::entry wavm; - binaryen::entry binaryen; - }; + std::unique_ptr& get_instantiated_module(const digest_type& code_id, const shared_vector& code) { + auto it = instantiation_cache.find(code_id); + if(it == instantiation_cache.end()) { + IR::Module module; + Serialization::MemoryInputStream stream((const U8 *)code.data(), code.size()); + WASM::serialize(stream, module); - struct wasm_interface_impl { - optional current_context; + wasm_injections::wasm_binary_injection injector(module); + injector.inject(); + + Serialization::ArrayOutputStream outstream; + WASM::serialize(outstream, module); + std::vector bytes = outstream.getBytes(); + + it = instantiation_cache.emplace(code_id, runtime_interface->instantiate_module((const char*)bytes.data(), bytes.size(), parse_initial_memory(module))).first; + } + return it->second; + } + + std::unique_ptr runtime_interface; + map> instantiation_cache; }; #define _REGISTER_INTRINSIC_EXPLICIT(CLS, METHOD, WASM_SIG, NAME, SIG)\ diff --git a/libraries/chain/include/eosio/chain/webassembly/binaryen.hpp b/libraries/chain/include/eosio/chain/webassembly/binaryen.hpp index 29da0699a8ba899dabec592f2769163c27f396c9..d891b8fe57df3d06d4789a9a9fd4cc2462936b11 100644 --- a/libraries/chain/include/eosio/chain/webassembly/binaryen.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/binaryen.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include #include @@ -16,8 +17,10 @@ using namespace eosio::chain::webassembly::common; using linear_memory_type = fc::array; using call_indirect_table_type = vector; +struct interpreter_interface; + struct intrinsic_registrator { - using intrinsic_fn = Literal(*)(LiteralList&); + using intrinsic_fn = Literal(*)(interpreter_interface*, LiteralList&); static auto& get_map(){ static map _map; @@ -32,19 +35,10 @@ struct intrinsic_registrator { using import_lut_type = unordered_map; -// create own module instance to access memorySize -class interpreter_instance : public ModuleInstance { - public: - using ModuleInstance::ModuleInstance; - - void set_accessible_pages(uint32_t num_pages) { - memorySize = num_pages; - } -}; struct interpreter_interface : ModuleInstance::ExternalInterface { - interpreter_interface(linear_memory_type& memory, call_indirect_table_type& table, import_lut_type& import_lut, const uint32_t& sbrk_bytes) - :memory(memory),table(table),import_lut(import_lut), sbrk_bytes(sbrk_bytes) + interpreter_interface(linear_memory_type& memory, call_indirect_table_type& table, import_lut_type& import_lut, const unsigned& initial_memory_size, apply_context& context) + :memory(memory),table(table),import_lut(import_lut), current_memory_size(initial_memory_size), context(context) {} void importGlobals(std::map& globals, Module& wasm) override @@ -60,7 +54,7 @@ struct interpreter_interface : ModuleInstance::ExternalInterface { { auto fn_iter = import_lut.find((uintptr_t)import); EOS_ASSERT(fn_iter != import_lut.end(), wasm_execution_error, "unknown import ${m}:${n}", ("m", import->module.c_str())("n", import->module.c_str())); - return fn_iter->second(args); + return fn_iter->second(this, args); } Literal callTable(Index index, LiteralList& arguments, WasmType result, ModuleInstance& instance) override @@ -82,8 +76,7 @@ struct interpreter_interface : ModuleInstance::ExternalInterface { } void assert_memory_is_accessible(uint32_t offset, size_t size) { - #warning this is wrong - if(offset + size > sbrk_bytes) + if(offset + size > current_memory_size) FC_THROW_EXCEPTION(wasm_execution_error, "access violation"); } @@ -119,9 +112,8 @@ struct interpreter_interface : ModuleInstance::ExternalInterface { } } - void growMemory(Address, Address) override - { - FC_THROW_EXCEPTION(wasm_execution_error, "grow memory is not supported"); + void growMemory(Address old_size, Address new_size) override { + current_memory_size += new_size.addr - old_size.addr; } int8_t load8s(Address addr) override { return load_memory(addr); } @@ -141,61 +133,19 @@ struct interpreter_interface : ModuleInstance::ExternalInterface { linear_memory_type& memory; call_indirect_table_type& table; import_lut_type& import_lut; - const uint32_t& sbrk_bytes; + unsigned current_memory_size; + apply_context& context; }; -struct info; -class entry { -public: - unique_ptr module; - linear_memory_type memory; - call_indirect_table_type table; - import_lut_type import_lut; - interpreter_interface* interface; - interpreter_instance* instance; - uint32_t sbrk_bytes; - - void reset(const info& ); - void prepare( const info& ); - - void call(const string& entry_point, LiteralList& args, apply_context& context); - void call_apply(apply_context&); - void call_error(apply_context&); - - int sbrk(int num_bytes); - - static const entry& get(wasm_interface& wasm); - - static entry build(const char* wasm_binary, size_t wasm_binary_size); - -private: - entry(unique_ptr&& module, linear_memory_type&& memory, call_indirect_table_type&& table, import_lut_type&& import_lut, uint32_t sbrk_bytes); - -}; - -struct info { - info( const entry& binaryen ) - { - default_sbrk_bytes = binaryen.sbrk_bytes; - const char* start = binaryen.memory.data; - const char* high_watermark = start + (binaryen.module->memory.initial * Memory::kPageSize); - while (high_watermark > start) { - if (*high_watermark) { - break; - } - high_watermark--; - } - mem_image.resize(high_watermark - start); - memcpy(mem_image.data(), start, high_watermark - start); - } +class binaryen_runtime : public eosio::chain::wasm_runtime_interface { + public: + binaryen_runtime(); + std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) override; - // a clean image of the memory used to sanitize things on checkin - vector mem_image; - uint32_t default_sbrk_bytes; + private: + linear_memory_type _memory __attribute__ ((aligned (4096))); }; - - /** * class to represent an in-wasm-memory array * it is a hint to the transcriber that the next parameter will @@ -204,21 +154,19 @@ struct info { * @tparam T */ template -inline array_ptr array_ptr_impl (wasm_interface& wasm, uint32_t ptr, size_t length) +inline array_ptr array_ptr_impl (interpreter_interface* interface, uint32_t ptr, size_t length) { - auto &interface = entry::get(wasm).interface; - return array_ptr((T*)(interface->get_validated_pointer(ptr, length))); + return array_ptr((T*)(interface->get_validated_pointer(ptr, length * sizeof(T)))); } /** * class to represent an in-wasm-memory char array that must be null terminated */ -inline null_terminated_ptr null_terminated_ptr_impl(wasm_interface& wasm, uint32_t ptr) +inline null_terminated_ptr null_terminated_ptr_impl(interpreter_interface* interface, uint32_t ptr) { - auto &interface = entry::get(wasm).interface; char *value = interface->get_validated_pointer(ptr, 1); const char* p = value; - const char* const top_of_memory = interface->memory.data + interface->sbrk_bytes; + const char* const top_of_memory = interface->memory.data + interface->current_memory_size; while(p < top_of_memory) if(*p++ == '\0') return null_terminated_ptr(value); @@ -254,6 +202,22 @@ inline float64_t convert_literal_to_native(Literal& v) { return reinterpret_cast(val); } +template<> +inline float32_t convert_literal_to_native(Literal& v) { + auto val = v.getf32(); + return reinterpret_cast(val); +} + +template<> +inline double convert_literal_to_native(Literal& v) { + return v.getf64(); +} + +template<> +inline float convert_literal_to_native(Literal& v) { + return v.getf32(); +} + template<> inline int64_t convert_literal_to_native(Literal& v) { return v.geti64(); @@ -286,26 +250,30 @@ inline name convert_literal_to_native(Literal& v) { } template -inline auto convert_native_to_literal(const wasm_interface &, T val) { +inline auto convert_native_to_literal(const interpreter_interface*, T val) { return Literal(val); } -inline auto convert_native_to_literal(const wasm_interface &, const float64_t& val) { +inline auto convert_native_to_literal(const interpreter_interface*, const float64_t& val) { return Literal( *((double*)(&val)) ); } -inline auto convert_native_to_literal(const wasm_interface &, const name &val) { +inline auto convert_native_to_literal(const interpreter_interface*, const float32_t& val) { + return Literal( *((float*)(&val)) ); +} + + +inline auto convert_native_to_literal(const interpreter_interface*, const name &val) { return Literal(val.value); } -inline auto convert_native_to_literal(const wasm_interface &, const fc::time_point_sec &val) { +inline auto convert_native_to_literal(const interpreter_interface*, const fc::time_point_sec &val) { return Literal(val.sec_since_epoch()); } -inline auto convert_native_to_literal(wasm_interface &wasm, char* ptr) { - const auto& mem = entry::get(wasm).interface->memory; - const char* base = mem.data; - const char* top_of_memory = base + mem.size(); +inline auto convert_native_to_literal(const interpreter_interface* interface, char* ptr) { + const char* base = interface->memory.data; + const char* top_of_memory = base + interface->current_memory_size; EOS_ASSERT(ptr >= base && ptr < top_of_memory, wasm_execution_error, "returning pointer not in linear memory"); return Literal((int)(ptr - base)); } @@ -330,12 +298,11 @@ struct intrinsic_invoker_impl; */ template struct intrinsic_invoker_impl> { - using next_method_type = Ret (*)(wasm_interface&, LiteralList&, int); + using next_method_type = Ret (*)(interpreter_interface*, LiteralList&, int); template - static Literal invoke(LiteralList& args) { - wasm_interface &wasm = wasm_interface::get(); - return convert_native_to_literal(wasm, Method(wasm, args, args.size() - 1)); + static Literal invoke(interpreter_interface* interface, LiteralList& args) { + return convert_native_to_literal(interface, Method(interface, args, args.size() - 1)); } template @@ -350,12 +317,11 @@ struct intrinsic_invoker_impl> { */ template<> struct intrinsic_invoker_impl> { - using next_method_type = void_type (*)(wasm_interface&, LiteralList&, int); + using next_method_type = void_type (*)(interpreter_interface*, LiteralList&, int); template - static Literal invoke(LiteralList& args) { - wasm_interface &wasm = wasm_interface::get(); - Method(wasm, args, args.size() - 1); + static Literal invoke(interpreter_interface* interface, LiteralList& args) { + Method(interface, args, args.size() - 1); return Literal(); } @@ -374,13 +340,13 @@ struct intrinsic_invoker_impl> { template struct intrinsic_invoker_impl> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret (*)(wasm_interface &, Input, Inputs..., LiteralList&, int); + using then_type = Ret (*)(interpreter_interface*, Input, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { auto& last = args.at(offset); auto native = convert_literal_to_native(last); - return Then(wasm, native, rest..., args, offset - 1); + return Then(interface, native, rest..., args, offset - 1); }; template @@ -400,13 +366,13 @@ struct intrinsic_invoker_impl> { template struct intrinsic_invoker_impl, size_t, Inputs...>> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wasm_interface &, array_ptr, size_t, Inputs..., LiteralList&, int); + using then_type = Ret(*)(interpreter_interface*, array_ptr, size_t, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { uint32_t ptr = args.at(offset - 1).geti32(); size_t length = args.at(offset).geti32(); - return Then(wasm, array_ptr_impl(wasm, ptr, length), length, rest..., args, offset - 2); + return Then(interface, array_ptr_impl(interface, ptr, length), length, rest..., args, offset - 2); }; template @@ -426,12 +392,12 @@ struct intrinsic_invoker_impl, size_t, Inputs...>> template struct intrinsic_invoker_impl> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wasm_interface &, null_terminated_ptr, Inputs..., LiteralList&, int); + using then_type = Ret(*)(interpreter_interface*, null_terminated_ptr, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { uint32_t ptr = args.at(offset).geti32(); - return Then(wasm, null_terminated_ptr_impl(wasm, ptr), rest..., args, offset - 1); + return Then(interface, null_terminated_ptr_impl(interface, ptr), rest..., args, offset - 1); }; template @@ -451,14 +417,15 @@ struct intrinsic_invoker_impl> { template struct intrinsic_invoker_impl, array_ptr, size_t, Inputs...>> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wasm_interface &, array_ptr, array_ptr, size_t, Inputs..., LiteralList&, int); + using then_type = Ret(*)(interpreter_interface*, array_ptr, array_ptr, size_t, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { uint32_t ptr_t = args.at(offset - 2).geti32(); uint32_t ptr_u = args.at(offset - 1).geti32(); size_t length = args.at(offset).geti32(); - return Then(wasm, array_ptr_impl(wasm, ptr_t, length), array_ptr_impl(wasm, ptr_u, length), length, args, offset - 3); + assert(sizeof(T) == sizeof(U)); + return Then(interface, array_ptr_impl(interface, ptr_t, length), array_ptr_impl(interface, ptr_u, length), length, args, offset - 3); }; template @@ -476,14 +443,14 @@ struct intrinsic_invoker_impl, array_ptr, size_t template struct intrinsic_invoker_impl, int, size_t>> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wasm_interface &, array_ptr, int, size_t, LiteralList&, int); + using then_type = Ret(*)(interpreter_interface*, array_ptr, int, size_t, LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, LiteralList& args, int offset) { uint32_t ptr = args.at(offset - 2).geti32(); uint32_t value = args.at(offset - 1).geti32(); size_t length = args.at(offset).geti32(); - return Then(wasm, array_ptr_impl(wasm, ptr, length), value, length, args, offset - 3); + return Then(interface, array_ptr_impl(interface, ptr, length), value, length, args, offset - 3); }; template @@ -503,13 +470,13 @@ struct intrinsic_invoker_impl, int, size_t>> { template struct intrinsic_invoker_impl> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret (*)(wasm_interface &, T *, Inputs..., LiteralList&, int); + using then_type = Ret (*)(interpreter_interface*, T *, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { uint32_t ptr = args.at(offset).geti32(); - T* base = array_ptr_impl(wasm, ptr, sizeof(T)); - return Then(wasm, base, rest..., args, offset - 1); + T* base = array_ptr_impl(interface, ptr, 1); + return Then(interface, base, rest..., args, offset - 1); }; template @@ -529,13 +496,13 @@ struct intrinsic_invoker_impl> { template struct intrinsic_invoker_impl> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret (*)(wasm_interface &, const name&, Inputs..., LiteralList&, int); + using then_type = Ret (*)(interpreter_interface*, const name&, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { uint64_t wasm_value = args.at(offset).geti64(); auto value = name(wasm_value); - return Then(wasm, value, rest..., args, offset - 1); + return Then(interface, value, rest..., args, offset - 1); } template @@ -555,13 +522,13 @@ struct intrinsic_invoker_impl> { template struct intrinsic_invoker_impl> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret (*)(wasm_interface &, const fc::time_point_sec&, Inputs..., LiteralList&, int); + using then_type = Ret (*)(interpreter_interface*, const fc::time_point_sec&, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { uint32_t wasm_value = args.at(offset).geti32(); auto value = fc::time_point_sec(wasm_value); - return Then(wasm, value, rest..., args, offset - 1); + return Then(interface, value, rest..., args, offset - 1); } template @@ -582,15 +549,15 @@ struct intrinsic_invoker_impl struct intrinsic_invoker_impl> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret (*)(wasm_interface &, T &, Inputs..., LiteralList&, int); + using then_type = Ret (*)(interpreter_interface*, T &, Inputs..., LiteralList&, int); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, LiteralList& args, int offset) { + static Ret translate_one(interpreter_interface* interface, Inputs... rest, LiteralList& args, int offset) { // references cannot be created for null pointers uint32_t ptr = args.at(offset).geti32(); FC_ASSERT(ptr != 0); - T* base = array_ptr_impl(wasm, ptr, sizeof(T)); - return Then(wasm, *base, rest..., args, offset - 1); + T* base = array_ptr_impl(interface, ptr, 1); + return Then(interface, *base, rest..., args, offset - 1); } template @@ -607,8 +574,8 @@ struct intrinsic_function_invoker { using impl = intrinsic_invoker_impl>; template - static Ret wrapper(wasm_interface &wasm, Params... params, LiteralList&, int) { - return (class_from_wasm::value(wasm).*Method)(params...); + static Ret wrapper(interpreter_interface* interface, Params... params, LiteralList&, int) { + return (class_from_wasm::value(interface->context).*Method)(params...); } template @@ -622,8 +589,8 @@ struct intrinsic_function_invoker { using impl = intrinsic_invoker_impl>; template - static void_type wrapper(wasm_interface &wasm, Params... params, LiteralList& args, int offset) { - (class_from_wasm::value(wasm).*Method)(params...); + static void_type wrapper(interpreter_interface* interface, Params... params, LiteralList& args, int offset) { + (class_from_wasm::value(interface->context).*Method)(params...); return void_type(); } diff --git a/libraries/chain/include/eosio/chain/webassembly/common.hpp b/libraries/chain/include/eosio/chain/webassembly/common.hpp index 3054c061287e2342b4d4c130f2ec1a39b163c1c9..be54a7b3dd41136d8b44c8577bf27f12c8b7b298 100644 --- a/libraries/chain/include/eosio/chain/webassembly/common.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/common.hpp @@ -5,24 +5,9 @@ using namespace fc; -namespace eosio { namespace chain { namespace webassembly { namespace common { - - struct wasm_context { - wasm_context(wasm_cache::entry &code, apply_context& ctx, wasm_interface::vm_type vm) - : code(code) - , context(ctx) - , vm(vm) - { - } - eosio::chain::wasm_cache::entry& code; - apply_context& context; - wasm_interface::vm_type vm; - }; +namespace eosio { namespace chain { - class intrinsics_accessor { - public: - static wasm_context &get_context(wasm_interface &wasm); - }; + class apply_context; template struct class_from_wasm { @@ -31,8 +16,8 @@ namespace eosio { namespace chain { namespace webassembly { namespace common { * @param wasm - the wasm_interface to use * @return */ - static auto value(wasm_interface &wasm) { - return T(wasm); + static auto value(apply_context& ctx) { + return T(ctx); } }; @@ -43,8 +28,8 @@ namespace eosio { namespace chain { namespace webassembly { namespace common { * @param wasm * @return */ - static auto &value(wasm_interface &wasm) { - return intrinsics_accessor::get_context(wasm).context; + static auto &value(apply_context& ctx) { + return ctx; } }; @@ -97,4 +82,4 @@ namespace eosio { namespace chain { namespace webassembly { namespace common { char *value; }; - } } } } // eosio::chain + } } // eosio::chain diff --git a/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp b/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp new file mode 100644 index 0000000000000000000000000000000000000000..8158c72782909531f3a4196bedec285916759f72 --- /dev/null +++ b/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp @@ -0,0 +1,23 @@ +#pragma once +#include +#include + +namespace eosio { namespace chain { + +class apply_context; + +class wasm_instantiated_module_interface { + public: + virtual void apply(apply_context& context) = 0; + + virtual ~wasm_instantiated_module_interface(); +}; + +class wasm_runtime_interface { + public: + virtual std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) = 0; + + virtual ~wasm_runtime_interface(); +}; + +}} \ No newline at end of file diff --git a/libraries/chain/include/eosio/chain/webassembly/wavm.hpp b/libraries/chain/include/eosio/chain/webassembly/wavm.hpp index 83608756614df0bb2fd30e5c72f32ad0e29b5435..931b6041306c2e8f4968e4793383c4a1aa20b0dd 100644 --- a/libraries/chain/include/eosio/chain/webassembly/wavm.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/wavm.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include "Runtime/Runtime.h" #include "IR/Types.h" @@ -13,60 +14,34 @@ using namespace Runtime; using namespace fc; using namespace eosio::chain::webassembly::common; -struct info; -class entry { +class wavm_runtime : public eosio::chain::wasm_runtime_interface { public: - ModuleInstance* instance; - Module* module; - uint32_t sbrk_bytes; - - void reset(const info& ); - void prepare(const info& ); - - void call(const string &entry_point, const vector &args, apply_context &context); - - void call_apply(apply_context&); - void call_error(apply_context&); - - int sbrk(int num_bytes); - - static const entry& get(wasm_interface& wasm); - - static entry build(const char* wasm_binary, size_t wasm_binary_size); + wavm_runtime(); + ~wavm_runtime(); + std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) override; private: - entry(ModuleInstance *instance, Module *module, uint32_t sbrk_bytes) - : instance(instance), module(module), sbrk_bytes(sbrk_bytes) - { - } - }; -struct info { - info( const entry &wavm ); - - // a clean image of the memory used to sanitize things on checkin - size_t mem_start = 0; - vector mem_image; - - uint32_t default_sbrk_bytes = 0; - +//This is a temporary hack for the single threaded implementation +struct running_instance_context { + MemoryInstance* memory; + apply_context* apply_ctx; }; - - +extern running_instance_context the_running_instance_context; /** * class to represent an in-wasm-memory array * it is a hint to the transcriber that the next parameter will - * be a size (data bytes length) and that the pair are validated together + * be a size (in Ts) and that the pair are validated together * This triggers the template specialization of intrinsic_invoker_impl * @tparam T */ template -inline array_ptr array_ptr_impl (wasm_interface& wasm, U32 ptr, size_t length) +inline array_ptr array_ptr_impl (running_instance_context& ctx, U32 ptr, size_t length) { - auto mem = getDefaultMemory(entry::get(wasm).instance); - if(!mem || ptr + length > IR::numBytesPerPage*Runtime::getMemoryNumPages(mem)) + MemoryInstance* mem = ctx.memory; + if(!mem || ptr + (length * sizeof(T)) > IR::numBytesPerPage*Runtime::getMemoryNumPages(mem)) Runtime::causeException(Exception::Cause::accessViolation); return array_ptr((T*)(getMemoryBaseAddress(mem) + ptr)); @@ -75,13 +50,13 @@ inline array_ptr array_ptr_impl (wasm_interface& wasm, U32 ptr, size_t length /** * class to represent an in-wasm-memory char array that must be null terminated */ -inline null_terminated_ptr null_terminated_ptr_impl(wasm_interface& wasm, U32 ptr) +inline null_terminated_ptr null_terminated_ptr_impl(running_instance_context& ctx, U32 ptr) { - auto mem = getDefaultMemory(entry::get(wasm).instance); + MemoryInstance* mem = ctx.memory; if(!mem) Runtime::causeException(Exception::Cause::accessViolation); - char *value = (char*)(getMemoryBaseAddress(mem) + ptr); + char *value = (char*)(getMemoryBaseAddress(mem) + ptr); const char* p = value; const char* const top_of_memory = (char*)(getMemoryBaseAddress(mem) + IR::numBytesPerPage*Runtime::getMemoryNumPages(mem)); while(p < top_of_memory) @@ -112,13 +87,23 @@ struct native_to_wasm { /** * Mappings for native types */ +/* template<> struct native_to_wasm { - using type = float32_t; //F32; + using type = F32; }; template<> struct native_to_wasm { - using type = float64_t; //F64; + using type = F64; +}; +*/ +template<> +struct native_to_wasm { + using type = F32; +}; +template<> +struct native_to_wasm { + using type = F64; }; template<> struct native_to_wasm { @@ -148,12 +133,6 @@ template<> struct native_to_wasm { using type = I64; }; -/* -template<> -struct native_to_wasm { - using type = I64; -}; -*/ template<> struct native_to_wasm { using type = I32; @@ -169,20 +148,20 @@ template using native_to_wasm_t = typename native_to_wasm::type; template -inline auto convert_native_to_wasm(const wasm_interface &wasm, T val) { +inline auto convert_native_to_wasm(const running_instance_context& ctx, T val) { return native_to_wasm_t(val); } -inline auto convert_native_to_wasm(const wasm_interface &wasm, const name &val) { +inline auto convert_native_to_wasm(const running_instance_context& ctx, const name &val) { return native_to_wasm_t(val.value); } -inline auto convert_native_to_wasm(const wasm_interface &wasm, const fc::time_point_sec &val) { +inline auto convert_native_to_wasm(const running_instance_context& ctx, const fc::time_point_sec& val) { return native_to_wasm_t(val.sec_since_epoch()); } -inline auto convert_native_to_wasm(wasm_interface &wasm, char* ptr) { - auto mem = getDefaultMemory(entry::get(wasm).instance); +inline auto convert_native_to_wasm(running_instance_context& ctx, char* ptr) { + MemoryInstance* mem = ctx.memory; if(!mem) Runtime::causeException(Exception::Cause::accessViolation); char* base = (char*)getMemoryBaseAddress(mem); @@ -196,10 +175,24 @@ template inline auto convert_wasm_to_native(native_to_wasm_t val) { return T(val); } - +/* +template<> +inline auto convert_wasm_to_native(native_to_wasm_t val) { + // ensure implicit casting doesn't occur + std::cout << "OOP1 " << *(float*)&val << "\n"; + float32_t ret = { *(uint32_t*)&val }; + return ret; +} +template<> +inline auto convert_wasm_to_native(native_to_wasm_t val) { + // ensure implicit casting doesn't occur + float64_t ret = { *(uint64_t*)&val }; + return ret; +} template<> inline auto convert_wasm_to_native(native_to_wasm_t val) { // ensure implicit casting doesn't occur + std::cout << "OOP1 " << *(float*)&val << "\n"; float32_t ret = { *(uint32_t*)&val }; return ret; } @@ -209,10 +202,15 @@ inline auto convert_wasm_to_native(native_to_wasm_t val) { float64_t ret = { *(uint64_t*)&val }; return ret; } - +*/ template struct wasm_to_value_type; +template<> +struct wasm_to_value_type { + static constexpr auto value = ValueType::f32; +}; + template<> struct wasm_to_value_type { static constexpr auto value = ValueType::f32; @@ -246,6 +244,10 @@ struct wasm_to_rvalue_type { static constexpr auto value = ResultType::f32; }; template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::f32; +}; +template<> struct wasm_to_rvalue_type { static constexpr auto value = ResultType::f64; }; @@ -346,12 +348,11 @@ struct intrinsic_invoker_impl; */ template struct intrinsic_invoker_impl, std::tuple> { - using next_method_type = Ret (*)(wasm_interface &, Translated...); + using next_method_type = Ret (*)(running_instance_context &, Translated...); template static native_to_wasm_t invoke(Translated... translated) { - wasm_interface &wasm = wasm_interface::get(); - return convert_native_to_wasm(wasm, Method(wasm, translated...)); + return convert_native_to_wasm(the_running_instance_context, Method(the_running_instance_context, translated...)); } template @@ -366,12 +367,11 @@ struct intrinsic_invoker_impl, std::tuple> { */ template struct intrinsic_invoker_impl, std::tuple> { - using next_method_type = void_type (*)(wasm_interface &, Translated...); + using next_method_type = void_type (*)(running_instance_context &, Translated...); template static void invoke(Translated... translated) { - wasm_interface &wasm = wasm_interface::get(); - Method(wasm, translated...); + Method(the_running_instance_context, translated...); } template @@ -391,12 +391,12 @@ template, std::tuple> { using translated_type = native_to_wasm_t; using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret (*)(wasm_interface &, Input, Inputs..., Translated...); + using then_type = Ret (*)(running_instance_context &, Input, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, translated_type last) { + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, translated_type last) { auto native = convert_wasm_to_native(last); - return Then(wasm, native, rest..., translated...); + return Then(ctx, native, rest..., translated...); }; template @@ -417,12 +417,12 @@ struct intrinsic_invoker_impl, std::tuple struct intrinsic_invoker_impl, size_t, Inputs...>, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(wasm_interface &, array_ptr, size_t, Inputs..., Translated...); + using then_type = Ret(*)(running_instance_context&, array_ptr, size_t, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, I32 ptr, I32 size) { + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr, I32 size) { const auto length = size_t(size); - return Then(wasm, array_ptr_impl(wasm, ptr, length), length, rest..., translated...); + return Then(ctx, array_ptr_impl(ctx, ptr, length), length, rest..., translated...); }; template @@ -443,11 +443,11 @@ struct intrinsic_invoker_impl, size_t, Inputs...>, template struct intrinsic_invoker_impl, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(wasm_interface &, null_terminated_ptr, Inputs..., Translated...); + using then_type = Ret(*)(running_instance_context&, null_terminated_ptr, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, I32 ptr) { - return Then(wasm, null_terminated_ptr_impl(wasm, ptr), rest..., translated...); + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr) { + return Then(ctx, null_terminated_ptr_impl(ctx, ptr), rest..., translated...); }; template @@ -468,12 +468,13 @@ struct intrinsic_invoker_impl, s template struct intrinsic_invoker_impl, array_ptr, size_t, Inputs...>, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(wasm_interface &, array_ptr, array_ptr, size_t, Inputs..., Translated...); + using then_type = Ret(*)(running_instance_context&, array_ptr, array_ptr, size_t, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, I32 ptr_t, I32 ptr_u, I32 size) { + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr_t, I32 ptr_u, I32 size) { const auto length = size_t(size); - return Then(wasm, array_ptr_impl(wasm, ptr_t, length), array_ptr_impl(wasm, ptr_u, length), length, rest..., translated...); + assert(sizeof(T)==sizeof(U)); + return Then(ctx, array_ptr_impl(ctx, ptr_t, length), array_ptr_impl(ctx, ptr_u, length), length, rest..., translated...); }; template @@ -492,12 +493,12 @@ struct intrinsic_invoker_impl, array_ptr, size_t template struct intrinsic_invoker_impl, int, size_t>, std::tuple<>> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(wasm_interface &, array_ptr, int, size_t); + using then_type = Ret(*)(running_instance_context&, array_ptr, int, size_t); template - static Ret translate_one(wasm_interface &wasm, I32 ptr, I32 value, I32 size) { + static Ret translate_one(running_instance_context& ctx, I32 ptr, I32 value, I32 size) { const auto length = size_t(size); - return Then(wasm, array_ptr_impl(wasm, ptr, length), value, length); + return Then(ctx, array_ptr_impl(ctx, ptr, length), value, length); }; template @@ -518,12 +519,12 @@ struct intrinsic_invoker_impl, int, size_t>, std template struct intrinsic_invoker_impl, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret (*)(wasm_interface &, T *, Inputs..., Translated...); + using then_type = Ret (*)(running_instance_context&, T *, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, I32 ptr) { - T* base = array_ptr_impl(wasm, ptr, sizeof(T)); - return Then(wasm, base, rest..., translated...); + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr) { + T* base = array_ptr_impl(ctx, ptr, 1); + return Then(ctx, base, rest..., translated...); }; template @@ -544,12 +545,12 @@ struct intrinsic_invoker_impl, std::tuple struct intrinsic_invoker_impl, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple >>; - using then_type = Ret (*)(wasm_interface &, const name&, Inputs..., Translated...); + using then_type = Ret (*)(running_instance_context&, const name&, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, native_to_wasm_t wasm_value) { + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, native_to_wasm_t wasm_value) { auto value = name(wasm_value); - return Then(wasm, value, rest..., translated...); + return Then(ctx, value, rest..., translated...); } template @@ -570,12 +571,12 @@ struct intrinsic_invoker_impl, std::tupl template struct intrinsic_invoker_impl, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple >>; - using then_type = Ret (*)(wasm_interface &, const fc::time_point_sec&, Inputs..., Translated...); + using then_type = Ret (*)(running_instance_context&, const fc::time_point_sec&, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, native_to_wasm_t wasm_value) { + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, native_to_wasm_t wasm_value) { auto value = fc::time_point_sec(wasm_value); - return Then(wasm, value, rest..., translated...); + return Then(ctx, value, rest..., translated...); } template @@ -597,17 +598,17 @@ struct intrinsic_invoker_impl struct intrinsic_invoker_impl, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret (*)(wasm_interface &, T &, Inputs..., Translated...); + using then_type = Ret (*)(running_instance_context &, T &, Inputs..., Translated...); template - static Ret translate_one(wasm_interface &wasm, Inputs... rest, Translated... translated, I32 ptr) { + static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr) { // references cannot be created for null pointers FC_ASSERT(ptr != 0); - auto mem = getDefaultMemory(entry::get(wasm).instance); + MemoryInstance* mem = ctx.memory; if(!mem || ptr+sizeof(T) >= IR::numBytesPerPage*Runtime::getMemoryNumPages(mem)) Runtime::causeException(Exception::Cause::accessViolation); T &base = *(T*)(getMemoryBaseAddress(mem)+ptr); - return Then(wasm, base, rest..., translated...); + return Then(ctx, base, rest..., translated...); } template @@ -624,8 +625,8 @@ struct intrinsic_function_invoker { using impl = intrinsic_invoker_impl, std::tuple<>>; template - static Ret wrapper(wasm_interface &wasm, Params... params) { - return (class_from_wasm::value(wasm).*Method)(params...); + static Ret wrapper(running_instance_context& ctx, Params... params) { + return (class_from_wasm::value(*ctx.apply_ctx).*Method)(params...); } template @@ -642,8 +643,8 @@ struct intrinsic_function_invoker { using impl = intrinsic_invoker_impl, std::tuple<>>; template - static void_type wrapper(wasm_interface &wasm, Params... params) { - (class_from_wasm::value(wasm).*Method)(params...); + static void_type wrapper(running_instance_context& ctx, Params... params) { + (class_from_wasm::value(*ctx.apply_ctx).*Method)(params...); return void_type(); } diff --git a/libraries/chain/wasm_eosio_injection.cpp b/libraries/chain/wasm_eosio_injection.cpp index 9328935691e3ae50eb8bde2b67b87d3e09df92a6..1b6df044da259d7a45e18da8387ded4adacf30eb 100644 --- a/libraries/chain/wasm_eosio_injection.cpp +++ b/libraries/chain/wasm_eosio_injection.cpp @@ -9,6 +9,7 @@ namespace eosio { namespace chain { namespace wasm_injections { using namespace IR; +using namespace eosio::chain::wasm_constraints; std::map, uint32_t> injector_utils::type_slots; std::map injector_utils::registered_injected; @@ -19,26 +20,12 @@ uint32_t injector_utils::first_imported_index; void noop_injection_visitor::inject( Module& m ) { /* just pass */ } void noop_injection_visitor::initializer() { /* just pass */ } -void memories_injection_visitor::inject( Module& m ) { -} -void memories_injection_visitor::initializer() { -} - -void data_segments_injection_visitor::inject( Module& m ) { -} -void data_segments_injection_visitor::initializer() { -} +void max_memory_injection_visitor::inject( Module& m ) { + if(m.memories.defs.size() && m.memories.defs[0].type.size.max > maximum_linear_memory/wasm_page_size) + m.memories.defs[0].type.size.max = maximum_linear_memory/wasm_page_size; -void tables_injection_visitor::inject( Module& m ) { -} -void tables_injection_visitor::initializer() { -} - -void globals_injection_visitor::inject( Module& m ) { - -} -void globals_injection_visitor::initializer() { } +void max_memory_injection_visitor::initializer() {} uint32_t instruction_counter::icnt = 0; int32_t checktime_injector::checktime_idx = -1; diff --git a/libraries/chain/wasm_eosio_validation.cpp b/libraries/chain/wasm_eosio_validation.cpp index 582194c6d372ec38240f1c07c3b46f6a325496b4..076b6ff3b7bf7e0ab7c240b03b127cee57914e4c 100644 --- a/libraries/chain/wasm_eosio_validation.cpp +++ b/libraries/chain/wasm_eosio_validation.cpp @@ -59,4 +59,34 @@ void globals_validation_visitor::validate( const Module& m ) { ("k", wasm_constraints::maximum_mutable_globals)); } +void maximum_function_stack_visitor::validate( const IR::Module& m ) { + for(const FunctionDef& func : m.functions.defs) { + unsigned function_stack_usage = 0; + for(const ValueType& local : func.nonParameterLocalTypes) + function_stack_usage += getTypeBitWidth(local)/8; + for(const ValueType& params : m.types[func.type.index]->parameters) + function_stack_usage += getTypeBitWidth(params)/8; + + if(function_stack_usage > wasm_constraints::maximum_func_local_bytes) + FC_THROW_EXCEPTION(wasm_execution_error, "Smart contract function has more than ${k} bytes of stack usage", + ("k", wasm_constraints::maximum_func_local_bytes)); + } +} + +void ensure_apply_exported_visitor::validate( const IR::Module& m ) { + bool found_it = false; + + for(const Export& exprt : m.exports) { + if(exprt.name != "apply" && exprt.kind != ObjectKind::function) + continue; + if(m.types[m.functions.getType(exprt.index).index] == FunctionType::get(ResultType::none, {ValueType::i64, ValueType::i64})) { + found_it = true; + break; + } + } + + if(!found_it) + FC_THROW_EXCEPTION(wasm_execution_error, "Smart contract's apply function not exported; non-existent; or wrong type"); +} + }}} // namespace eosio chain validation diff --git a/libraries/chain/wasm_interface.cpp b/libraries/chain/wasm_interface.cpp index 362e738871bb0ee28deaeb75d018a214e6a69890..ac1fd71c300eeb0fe99617d597df81ba500788eb 100644 --- a/libraries/chain/wasm_interface.cpp +++ b/libraries/chain/wasm_interface.cpp @@ -14,17 +14,8 @@ #include #include #include -#include -#include "IR/Module.h" -#include "Platform/Platform.h" -#include "WAST/WAST.h" -#include "IR/Operators.h" -#include "IR/Validate.h" -#include "IR/Types.h" -#include "Runtime/Runtime.h" -#include "Runtime/Linker.h" -#include "Runtime/Intrinsics.h" +#include #include #include #include @@ -38,341 +29,34 @@ namespace eosio { namespace chain { using namespace webassembly; using namespace webassembly::common; - /** - * Implementation class for the wasm cache - * it is responsible for compiling and storing instances of wasm code for use - * - */ - struct wasm_cache_impl { - wasm_cache_impl() - { - // TODO clean this up - //check_wasm_opcode_dispositions(); - Runtime::init(); - } - - /** - * this must wait for all work to be done otherwise it may destroy memory - * referenced by other threads - * - * Expectations on wasm_cache dictate that all available code has been - * returned before this can be destroyed - */ - ~wasm_cache_impl() { - Runtime::freeUnreferencedObjects({}); - } - - /** - * internal tracking structure which deduplicates memory images - * and tracks available vs in-use entries. - * - * The instances array has two sections, "available" instances - * are in the front of the vector and anything at an index of - * available_instances or greater is considered "in use" - * - * instances are stored as pointers so that their positions - * in the array can be moved without invaliding references to - * the instance handed out to other threads - */ - struct code_info { - explicit code_info(wavm::info&& wavm_info, binaryen::info&& binaryen_info) - : wavm_info(std::forward(wavm_info)) - , binaryen_info(std::forward(binaryen_info)) - {} - - - wavm::info wavm_info; - binaryen::info binaryen_info; - - // all existing instances of this code - vector> instances; - size_t available_instances = 0; - }; - - using optional_info_ref = optional>; - using optional_entry_ref = optional>; - - /** - * Convenience method for running code with the _cache_lock and releaseint that lock - * when the code completes - * - * @param f - lambda to execute - * @return - varies depending on the signature of the lambda - */ - template - auto with_lock(std::mutex &l, F f) { - std::lock_guard lock(l); - return f(); - }; - - /** - * Fetch the tracking struct given a code_id if it exists - * - * @param code_id - * @return - */ - optional_info_ref fetch_info(const digest_type& code_id) { - return with_lock(_cache_lock, [&,this](){ - auto iter = _cache.find(code_id); - if (iter != _cache.end()) { - return optional_info_ref(iter->second); - } - - return optional_info_ref(); - }); - } - - /** - * Opportunistically fetch an available instance of the code; - * @param code_id - the id of the code to fetch - * @return - reference to the entry when one is available - */ - optional_entry_ref try_fetch_entry(const digest_type& code_id) { - return with_lock(_cache_lock, [&,this](){ - auto iter = _cache.find(code_id); - if (iter != _cache.end() && iter->second.available_instances > 0) { - auto &ptr = iter->second.instances.at(--(iter->second.available_instances)); - return optional_entry_ref(*ptr); - } - - return optional_entry_ref(); - }); - } - - /** - * Fetch a copy of the code, this is guaranteed to return an entry IF the code is compilable. - * In order to do that in safe way this code may cause the calling thread to sleep while a new - * version of the code is compiled and inserted into the cache - * - * @param code_id - the id of the code to fetch - * @param wasm_binary - the binary for the wasm - * @param wasm_binary_size - the size of the binary - * @return reference to a usable cache entry - */ - struct test_mutator { - static std::vector accept( wasm_ops::instr* inst ) { - std::cout << "ACCEPTING\n"; - return {}; - } - }; - struct test_mutator2 { - static std::vector accept( wasm_ops::instr* inst ) { - std::cout << "ACCEPTING2\n"; - return {}; - } - }; - - wasm_cache::entry& fetch_entry(const digest_type& code_id, const char* wasm_binary, size_t wasm_binary_size) { - std::condition_variable condition; - optional_entry_ref result; - std::exception_ptr error; - - // compilation is not thread safe, so we dispatch it to a io_service running on a single thread to - // queue up and synchronize compilations - with_lock(_compile_lock, [&,this](){ - // check to see if someone returned what we need before making a new one - auto pending_result = try_fetch_entry(code_id); - std::exception_ptr pending_error; - - if (!pending_result) { - // time to compile a brand new (maybe first) copy of this code - - fc::optional wavm; - fc::optional wavm_info; - fc::optional binaryen; - fc::optional binaryen_info; - - try { - - IR::Module* module = new IR::Module(); - - Serialization::MemoryInputStream stream((const U8 *) wasm_binary, wasm_binary_size); - WASM::serialize(stream, *module); - - wasm_validations::wasm_binary_validation validator( *module ); - wasm_injections::wasm_binary_injection injector( *module ); - - injector.inject(); - validator.validate(); - Serialization::ArrayOutputStream outstream; - WASM::serialize(outstream, *module); - std::vector bytes = outstream.getBytes(); - - wavm = wavm::entry::build((char*)bytes.data(), bytes.size()); - wavm_info.emplace(*wavm); - - binaryen = binaryen::entry::build((char*)bytes.data(), bytes.size()); - binaryen_info.emplace(*binaryen); - } catch (...) { - pending_error = std::current_exception(); - } - - if (pending_error == nullptr) { - // grab the lock and put this in the cache as unavailble - with_lock(_cache_lock, [&,this]() { - // find or create a new entry - auto iter = _cache.emplace(code_id, code_info(std::move(*wavm_info),std::move(*binaryen_info))).first; - - iter->second.instances.emplace_back(std::make_unique(std::move(*wavm), std::move(*binaryen))); - pending_result = optional_entry_ref(*iter->second.instances.back().get()); - }); - } - } - - if (pending_error != nullptr) { - error = pending_error; - } else { - result = pending_result; - } - - }); - - - try { - if (error != nullptr) { - std::rethrow_exception(error); - } else { - return (*result).get(); - } - } FC_RETHROW_EXCEPTIONS(error, "error compiling WASM for code with hash: ${code_id}", ("code_id", code_id)); - } - - /** - * return an entry to the cache. The entry is presumed to come back in a "dirty" state and must be - * sanitized before returning to the "available" state. This sanitization is done asynchronously so - * as not to delay the current executing thread. - * - * @param code_id - the code Id associated with the instance - * @param entry - the entry to return - */ - void return_entry(const digest_type& code_id, wasm_cache::entry& entry) { - // sanitize by reseting the memory that may now be dirty - auto& info = (*fetch_info(code_id)).get(); - entry.wavm.reset(info.wavm_info); - entry.binaryen.reset(info.binaryen_info); - - // under a lock, put this entry back in the available instances side of the instances vector - with_lock(_cache_lock, [&,this](){ - // walk the vector and find this entry - auto iter = info.instances.begin(); - while (iter->get() != &entry) { - ++iter; - } - - FC_ASSERT(iter != info.instances.end(), "Checking in a WASM enty that was not created properly!"); - - auto first_unavailable = (info.instances.begin() + info.available_instances); - if (iter != first_unavailable) { - std::swap(iter, first_unavailable); - } - info.available_instances++; - }); - } - - //initialize the memory for a cache entry - wasm_cache::entry& prepare_wasm_instance(wasm_cache::entry& wasm_cache_entry, const digest_type& code_id) { - auto& info = (*fetch_info(code_id)).get(); - wasm_cache_entry.wavm.prepare(info.wavm_info); - wasm_cache_entry.binaryen.prepare(info.binaryen_info); - return wasm_cache_entry; - } - - // mapping of digest to an entry for the code - map _cache; - std::mutex _cache_lock; - - // compilation lock - std::mutex _compile_lock; - }; - - wasm_cache::wasm_cache() - :_my( new wasm_cache_impl() ) { - } - - wasm_cache::~wasm_cache() = default; - - wasm_cache::entry &wasm_cache::checkout( const digest_type& code_id, const char* wasm_binary, size_t wasm_binary_size ) { - // see if there is an available entry in the cache - auto result = _my->try_fetch_entry(code_id); - if (result) { - wasm_cache::entry& wasm_cache_entry = (*result).get(); - return _my->prepare_wasm_instance(wasm_cache_entry, code_id); - } - return _my->prepare_wasm_instance(_my->fetch_entry(code_id, wasm_binary, wasm_binary_size), code_id); - } - - - void wasm_cache::checkin(const digest_type& code_id, entry& code ) { - _my->return_entry(code_id, code); - } - - /** - * RAII wrapper to make sure that the context is cleaned up on exception - */ - struct scoped_context { - template - scoped_context(optional &context, Args&&... args) - :context(context) - { - context.emplace( std::forward(args)... ); - } - - ~scoped_context() { - context.reset(); + wasm_interface::wasm_interface(vm_type vm) + :my( new wasm_interface_impl(vm) ) { } - optional& context; - }; + wasm_interface::~wasm_interface() {} - wasm_interface::wasm_interface() - :my( new wasm_interface_impl() ) { - } + void wasm_interface::validate(const bytes& code) { + Module module; + Serialization::MemoryInputStream stream((U8*)code.data(), code.size()); + WASM::serialize(stream, module); - wasm_interface& wasm_interface::get() { - thread_local wasm_interface* single = nullptr; - if( !single ) { - single = new wasm_interface(); - } - return *single; - } + wasm_validations::wasm_binary_validation validator(module); + validator.validate(); - void wasm_interface::apply( wasm_cache::entry& code, apply_context& context, vm_type vm ) { - auto context_guard = scoped_context(my->current_context, code, context, vm); - switch (vm) { - case vm_type::wavm: - code.wavm.call_apply(context); - break; - case vm_type::binaryen: - code.binaryen.call_apply(context); - break; - } - } + root_resolver resolver; + LinkResult link_result = linkModule(module, resolver); - void wasm_interface::error( wasm_cache::entry& code, apply_context& context, vm_type vm ) { - auto context_guard = scoped_context(my->current_context, code, context, vm); - switch (vm) { - case vm_type::wavm: - code.wavm.call_error(context); - break; - case vm_type::binaryen: - code.binaryen.call_error(context); - break; - } + //there are a couple opportunties for improvement here-- + //Easy: Cache the Module created here so it can be reused for instantiaion + //Hard: Kick off instantiation in a separate thread at this location } - wasm_context& common::intrinsics_accessor::get_context(wasm_interface &wasm) { - FC_ASSERT(wasm.my->current_context.valid()); - return *wasm.my->current_context; + void wasm_interface::apply( const digest_type& code_id, const shared_vector& code, apply_context& context ) { + my->get_instantiated_module(code_id, code)->apply(context); } - const wavm::entry& wavm::entry::get(wasm_interface& wasm) { - return common::intrinsics_accessor::get_context(wasm).code.wavm; - } - - - const binaryen::entry& binaryen::entry::get(wasm_interface& wasm) { - return common::intrinsics_accessor::get_context(wasm).code.binaryen; - } + wasm_instantiated_module_interface::~wasm_instantiated_module_interface() {} + wasm_runtime_interface::~wasm_runtime_interface() {} #if defined(assert) #undef assert @@ -380,10 +64,8 @@ namespace eosio { namespace chain { class context_aware_api { public: - context_aware_api(wasm_interface& wasm, bool context_free = false ) - :code(intrinsics_accessor::get_context(wasm).code), - context(intrinsics_accessor::get_context(wasm).context) - ,vm(intrinsics_accessor::get_context(wasm).vm) + context_aware_api(apply_context& ctx, bool context_free = false ) + :context(ctx) { if( context.context_free ) FC_ASSERT( context_free, "only context free api's can be used in this context" ); @@ -391,16 +73,14 @@ class context_aware_api { } protected: - wasm_cache::entry& code; apply_context& context; - wasm_interface::vm_type vm; }; class context_free_api : public context_aware_api { public: - context_free_api( wasm_interface& wasm ) - :context_aware_api(wasm, true) { + context_free_api( apply_context& ctx ) + :context_aware_api(ctx, true) { /* the context_free_data is not available during normal application because it is prunable */ FC_ASSERT( context.context_free, "this API may only be called from context_free apply" ); } @@ -412,8 +92,8 @@ class context_free_api : public context_aware_api { class privileged_api : public context_aware_api { public: - privileged_api( wasm_interface& wasm ) - :context_aware_api(wasm) + privileged_api( apply_context& ctx ) + :context_aware_api(ctx) { FC_ASSERT( context.privileged, "${code} does not have permission to call this API", ("code",context.receiver) ); } @@ -502,8 +182,8 @@ class privileged_api : public context_aware_api { class checktime_api : public context_aware_api { public: - explicit checktime_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + explicit checktime_api( apply_context& ctx ) + :context_aware_api(ctx,true){} void checktime(uint32_t instruction_count) { context.checktime(instruction_count); @@ -515,41 +195,87 @@ class softfloat_api : public context_aware_api { // TODO add traps on truncations for special cases (NaN or outside the range which rounds to an integer) using context_aware_api::context_aware_api; // float binops - float32_t _eosio_f32_add( float32_t a, float32_t b ) { return f32_add( a, b ); } - float32_t _eosio_f32_sub( float32_t a, float32_t b ) { return f32_sub( a, b ); } - float32_t _eosio_f32_div( float32_t a, float32_t b ) { return f32_div( a, b ); } - float32_t _eosio_f32_mul( float32_t a, float32_t b ) { return f32_mul( a, b ); } - float32_t _eosio_f32_min( float32_t a, float32_t b ) { return f32_lt( a, b ) ? a : b; } - float32_t _eosio_f32_max( float32_t a, float32_t b ) { return f32_lt( a, b ) ? b : a; } - float32_t _eosio_f32_copysign( float32_t a, float32_t b ) { + float _eosio_f32_add( float a, float b ) { + float32_t ret = f32_add( to_softfloat32(a), to_softfloat32(b) ); + return *reinterpret_cast(&ret); + } + float _eosio_f32_sub( float a, float b ) { + float32_t ret = f32_sub( to_softfloat32(a), to_softfloat32(b) ); + return *reinterpret_cast(&ret); + } + float _eosio_f32_div( float a, float b ) { + float32_t ret = f32_div( to_softfloat32(a), to_softfloat32(b) ); + return *reinterpret_cast(&ret); + } + float _eosio_f32_mul( float a, float b ) { + float32_t ret = f32_mul( to_softfloat32(a), to_softfloat32(b) ); + return *reinterpret_cast(&ret); + } + float _eosio_f32_min( float af, float bf ) { + float32_t a = to_softfloat32(af); + float32_t b = to_softfloat32(bf); + if (is_nan(a)) { + return af; + } + if (is_nan(b)) { + return bf; + } + if ( sign_bit(a) != sign_bit(b) ) { + return sign_bit(a) ? af : bf; + } + return f32_lt(a,b) ? af : bf; + } + float _eosio_f32_max( float af, float bf ) { + float32_t a = to_softfloat32(af); + float32_t b = to_softfloat32(bf); + if (is_nan(a)) { + return af; + } + if (is_nan(b)) { + return bf; + } + if ( sign_bit(a) != sign_bit(b) ) { + return sign_bit(a) ? bf : af; + } + return f32_lt( a, b ) ? bf : af; + } + float _eosio_f32_copysign( float af, float bf ) { + float32_t a = to_softfloat32(af); + float32_t b = to_softfloat32(bf); uint32_t sign_of_a = a.v >> 31; uint32_t sign_of_b = b.v >> 31; a.v &= ~(1 << 31); // clear the sign bit a.v = a.v | (sign_of_b << 31); // add the sign of b - return a; + return from_softfloat32(a); } // float unops - float32_t _eosio_f32_abs( float32_t a ) { + float _eosio_f32_abs( float af ) { + float32_t a = to_softfloat32(af); a.v &= ~(1 << 31); - return a; + return from_softfloat32(a); } - float32_t _eosio_f32_neg( float32_t a ) { + float _eosio_f32_neg( float af ) { + float32_t a = to_softfloat32(af); uint32_t sign = a.v >> 31; a.v &= ~(1 << 31); a.v |= (!sign << 31); - return a; + return from_softfloat32(a); + } + float _eosio_f32_sqrt( float a ) { + float32_t ret = f32_sqrt( to_softfloat32(a) ); + return from_softfloat32(ret); } - float32_t _eosio_f32_sqrt( float32_t a ) { return f32_sqrt( a ); } // ceil, floor, trunc and nearest are lifted from libc - float32_t _eosio_f32_ceil( float32_t a ) { - int e = (int)(a.v >> 23 & 0xff) - 0x7f; + float _eosio_f32_ceil( float af ) { + float32_t a = to_softfloat32(af); + int e = (int)(a.v >> 23 & 0xFF) - 0X7F; uint32_t m; if (e >= 23) - return a; + return af; if (e >= 0) { - m = 0x007fffff >> e; + m = 0x007FFFFF >> e; if ((a.v & m) == 0) - return a; + return af; if (a.v >> 31 == 0) a.v += m; a.v &= ~m; @@ -559,17 +285,19 @@ class softfloat_api : public context_aware_api { else if (a.v << 1) a.v = 0x3F800000; // return 1.0f } - return a; + + return from_softfloat32(a); } - float32_t _eosio_f32_floor( float32_t a ) { - int e = (int)(a.v >> 23 & 0xff) - 0x7f; + float _eosio_f32_floor( float af ) { + float32_t a = to_softfloat32(af); + int e = (int)(a.v >> 23 & 0xFF) - 0X7F; uint32_t m; if (e >= 23) - return a; + return af; if (e >= 0) { - m = 0x007fffff >> e; + m = 0x007FFFFF >> e; if ((a.v & m) == 0) - return a; + return af; if (a.v >> 31) a.v += m; a.v &= ~m; @@ -577,130 +305,359 @@ class softfloat_api : public context_aware_api { if (a.v >> 31 == 0) a.v = 0; else if (a.v << 1) - a.v = 0x3F800000; // return 1.0f + a.v = 0xBF800000; // return -1.0f } - return a; + return from_softfloat32(a); } - float32_t _eosio_f32_trunc( float32_t a ) { + float _eosio_f32_trunc( float af ) { + float32_t a = to_softfloat32(af); int e = (int)(a.v >> 23 & 0xff) - 0x7f + 9; uint32_t m; if (e >= 23 + 9) - return a; + return af; if (e < 9) e = 1; m = -1U >> e; if ((a.v & m) == 0) - return a; + return af; a.v &= ~m; - return a; + return from_softfloat32(a); } - float32_t _eosio_f32_nearest( float32_t a ) { + float _eosio_f32_nearest( float af ) { + float32_t a = to_softfloat32(af); int e = a.v>>23 & 0xff; int s = a.v>>31; float32_t y; if (e >= 0x7f+23) - return a; + return af; if (s) - y = f32_add( f32_sub( a, inv_float_eps ), inv_float_eps ); + y = f32_add( f32_sub( a, float32_t{inv_float_eps} ), float32_t{inv_float_eps} ); else - y = f32_sub( f32_add( a, inv_float_eps ), inv_float_eps ); + y = f32_sub( f32_add( a, float32_t{inv_float_eps} ), float32_t{inv_float_eps} ); if (f32_eq( y, {0} ) ) - return s ? float32_t{0x80000000} : float32_t{0}; // return either -0.0 or 0.0f - return y; + return s ? -0.0f : 0.0f; + return from_softfloat32(y); } + // float relops - bool _eosio_f32_eq( float32_t a, float32_t b ) { return f32_eq( a, b ); } - bool _eosio_f32_ne( float32_t a, float32_t b ) { return !f32_eq( a, b ); } - bool _eosio_f32_lt( float32_t a, float32_t b ) { return f32_lt( a, b ); } - bool _eosio_f32_le( float32_t a, float32_t b ) { return f32_le( a, b ); } - bool _eosio_f32_gt( float32_t a, float32_t b ) { return !f32_le( a, b ); } - bool _eosio_f32_ge( float32_t a, float32_t b ) { return !f32_lt( a, b ); } + bool _eosio_f32_eq( float a, float b ) { return f32_eq( to_softfloat32(a), to_softfloat32(b) ); } + bool _eosio_f32_ne( float a, float b ) { return !f32_eq( to_softfloat32(a), to_softfloat32(b) ); } + bool _eosio_f32_lt( float a, float b ) { return f32_lt( to_softfloat32(a), to_softfloat32(b) ); } + bool _eosio_f32_le( float a, float b ) { return f32_le( to_softfloat32(a), to_softfloat32(b) ); } + bool _eosio_f32_gt( float af, float bf ) { + float32_t a = to_softfloat32(af); + float32_t b = to_softfloat32(bf); + if (is_nan(a)) + return false; + if (is_nan(b)) + return false; + return !f32_le( a, b ); + } + bool _eosio_f32_ge( float af, float bf ) { + float32_t a = to_softfloat32(af); + float32_t b = to_softfloat32(bf); + if (is_nan(a)) + return false; + if (is_nan(b)) + return false; + return !f32_lt( a, b ); + } // double binops - float64_t _eosio_f64_add( float64_t a, float64_t b ) { return f64_add( a, b ); } - float64_t _eosio_f64_sub( float64_t a, float64_t b ) { return f64_sub( a, b ); } - float64_t _eosio_f64_div( float64_t a, float64_t b ) { return f64_div( a, b ); } - float64_t _eosio_f64_mul( float64_t a, float64_t b ) { return f64_mul( a, b ); } - float64_t _eosio_f64_min( float64_t a, float64_t b ) { return f64_lt( a, b ) ? a : b; } - float64_t _eosio_f64_max( float64_t a, float64_t b ) { return f64_lt( a, b ) ? b : a; } - float64_t _eosio_f64_copysign( float64_t a, float64_t b ) { + double _eosio_f64_add( double a, double b ) { + float64_t ret = f64_add( to_softfloat64(a), to_softfloat64(b) ); + return from_softfloat64(ret); + } + double _eosio_f64_sub( double a, double b ) { + float64_t ret = f64_sub( to_softfloat64(a), to_softfloat64(b) ); + return from_softfloat64(ret); + } + double _eosio_f64_div( double a, double b ) { + float64_t ret = f64_div( to_softfloat64(a), to_softfloat64(b) ); + return from_softfloat64(ret); + } + double _eosio_f64_mul( double a, double b ) { + float64_t ret = f64_mul( to_softfloat64(a), to_softfloat64(b) ); + return from_softfloat64(ret); + } + double _eosio_f64_min( double af, double bf ) { + float64_t a = to_softfloat64(af); + float64_t b = to_softfloat64(bf); + if (is_nan(a)) + return af; + if (is_nan(b)) + return bf; + if (sign_bit(a) != sign_bit(b)) + return sign_bit(a) ? af : bf; + return f64_lt( a, b ) ? af : bf; + } + double _eosio_f64_max( double af, double bf ) { + float64_t a = to_softfloat64(af); + float64_t b = to_softfloat64(bf); + if (is_nan(a)) + return af; + if (is_nan(b)) + return bf; + if (sign_bit(a) != sign_bit(b)) + return sign_bit(a) ? bf : af; + return f64_lt( a, b ) ? bf : af; + } + double _eosio_f64_copysign( double af, double bf ) { + float64_t a = to_softfloat64(af); + float64_t b = to_softfloat64(bf); uint64_t sign_of_a = a.v >> 63; uint64_t sign_of_b = b.v >> 63; a.v &= ~(uint64_t(1) << 63); // clear the sign bit a.v = a.v | (sign_of_b << 63); // add the sign of b - return a; + return from_softfloat64(a); } // double unops - float64_t _eosio_f64_abs( float64_t a ) { + double _eosio_f64_abs( double af ) { + float64_t a = to_softfloat64(af); a.v &= ~(uint64_t(1) << 63); - return a; + return from_softfloat64(a); } - float64_t _eosio_f64_neg( float64_t a ) { + double _eosio_f64_neg( double af ) { + float64_t a = to_softfloat64(af); uint64_t sign = a.v >> 63; a.v &= ~(uint64_t(1) << 63); a.v |= (uint64_t(!sign) << 63); - return a; + return from_softfloat64(a); + } + double _eosio_f64_sqrt( double a ) { + float64_t ret = f64_sqrt( to_softfloat64(a) ); + return from_softfloat64(ret); } - float64_t _eosio_f64_sqrt( float64_t a ) { return f64_sqrt( a ); } // ceil, floor, trunc and nearest are lifted from libc - float64_t _eosio_f64_ceil( float64_t a ) { + double _eosio_f64_ceil( double af ) { + float64_t a = to_softfloat64( af ); + float64_t ret; int e = a.v >> 52 & 0x7ff; float64_t y; if (e >= 0x3ff+52 || f64_eq( a, { 0 } )) - return a; + return af; /* y = int(x) - x, where int(x) is an integer neighbor of x */ if (a.v >> 63) - y = f64_sub( f64_add( f64_sub( a, inv_double_eps ), inv_double_eps ), a ); + y = f64_sub( f64_add( f64_sub( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ), a ); else - y = f64_sub( f64_sub( f64_add( a, inv_double_eps ), inv_double_eps ), a ); + y = f64_sub( f64_sub( f64_add( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ), a ); /* special case because of non-nearest rounding modes */ if (e <= 0x3ff-1) { - return a.v >> 63 ? float64_t{0x8000000000000000} : float64_t{0xBE99999A3F800000}; //either -0.0 or 1 + return a.v >> 63 ? -0.0 : 1.0; //float64_t{0x8000000000000000} : float64_t{0xBE99999A3F800000}; //either -0.0 or 1 } - if (f64_lt( y, { 0 } )) - return f64_add( f64_add( a, y ), { 0xBE99999A3F800000 } ); // plus 1 - return f64_add( a, y ); + if (f64_lt( y, to_softfloat64(0) )) { + std::cout << "A3 " << af << " C " << floor(af) << " Y "<< *(double*)&ret << "\n"; + ret = f64_add( f64_add( a, y ), to_softfloat64(1) ); // 0xBE99999A3F800000 } ); // plus 1 + return from_softfloat64(ret); + } + ret = f64_add( a, y ); + return from_softfloat64(ret); } - - float64_t _eosio_f64_trunc( float64_t a ) { + double _eosio_f64_floor( double af ) { + float64_t a = to_softfloat64( af ); + float64_t ret; + int e = a.v >> 52 & 0x7FF; + float64_t y; + double de = 1/DBL_EPSILON; + if ( a.v == 0x8000000000000000) { + return af; + } + if (e >= 0x3FF+52 || a.v == 0) { + return af; + } + if (a.v >> 63) + y = f64_sub( f64_add( f64_sub( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ), a ); + else + y = f64_sub( f64_sub( f64_add( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ), a ); + if (e <= 0x3FF-1) { + return a.v>>63 ? -1.0 : 0.0; //float64_t{0xBFF0000000000000} : float64_t{0}; // -1 or 0 + } + if ( !f64_le( y, float64_t{0} ) ) { + ret = f64_sub( f64_add(a,y), to_softfloat64(1.0)); + return from_softfloat64(ret); + } + ret = f64_add( a, y ); + return from_softfloat64(ret); + } + double _eosio_f64_trunc( double af ) { + float64_t a = to_softfloat64( af ); int e = (int)(a.v >> 52 & 0x7ff) - 0x3ff + 12; uint64_t m; if (e >= 52 + 12) - return a; + return af; if (e < 12) e = 1; m = -1ULL >> e; if ((a.v & m) == 0) - return a; + return af; a.v &= ~m; - return a; + return from_softfloat64(a); + } + + double _eosio_f64_nearest( double af ) { + float64_t a = to_softfloat64( af ); + int e = (a.v >> 52 & 0x7FF); + int s = a.v >> 63; + float64_t y; + if ( e >= 0x3FF+52 ) + return af; + if ( s ) + y = f64_add( f64_sub( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ); + else + y = f64_sub( f64_add( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ); + if ( f64_eq( y, float64_t{0} ) ) + return s ? -0.0 : 0.0; + return from_softfloat64(y); + } + + // double relops + bool _eosio_f64_eq( double a, double b ) { return f64_eq( to_softfloat64(a), to_softfloat64(b) ); } + bool _eosio_f64_ne( double a, double b ) { return !f64_eq( to_softfloat64(a), to_softfloat64(b) ); } + bool _eosio_f64_lt( double a, double b ) { return f64_lt( to_softfloat64(a), to_softfloat64(b) ); } + bool _eosio_f64_le( double a, double b ) { return f64_le( to_softfloat64(a), to_softfloat64(b) ); } + bool _eosio_f64_gt( double af, double bf ) { + float64_t a = to_softfloat64(af); + float64_t b = to_softfloat64(bf); + if (is_nan(a)) + return false; + if (is_nan(b)) + return false; + return !f64_le( a, b ); + } + bool _eosio_f64_ge( double af, double bf ) { + float64_t a = to_softfloat64(af); + float64_t b = to_softfloat64(bf); + if (is_nan(a)) + return false; + if (is_nan(b)) + return false; + return !f64_lt( a, b ); } // float and double conversions - float64_t _eosio_f32_promote( float32_t a ) { return f32_to_f64( a ); } - float32_t _eosio_f64_demote( float64_t a ) { return f64_to_f32( a ); } - int32_t _eosio_f32_trunc_i32s( float32_t a ) { return f32_to_i32( _eosio_f32_trunc( a ), 0, false ); } - int32_t _eosio_f64_trunc_i32s( float64_t a ) { return f64_to_i32( _eosio_f64_trunc( a ), 0, false ); } - uint32_t _eosio_f32_trunc_i32u( float32_t a ) { return f32_to_ui32( _eosio_f32_trunc( a ), 0, false ); } - uint32_t _eosio_f64_trunc_i32u( float64_t a ) { return f64_to_ui32( _eosio_f64_trunc( a ), 0, false ); } - int64_t _eosio_f32_trunc_i64s( float32_t a ) { return f32_to_i64( _eosio_f32_trunc( a ), 0, false ); } - int64_t _eosio_f64_trunc_i64s( float64_t a ) { return f64_to_i64( _eosio_f64_trunc( a ), 0, false ); } - uint64_t _eosio_f32_trunc_i64u( float32_t a ) { return f32_to_ui64( _eosio_f32_trunc( a ), 0, false ); } - uint64_t _eosio_f64_trunc_i64u( float64_t a ) { return f64_to_ui64( _eosio_f64_trunc( a ), 0, false ); } - float32_t _eosio_i32_to_f32( int32_t a ) { return i32_to_f32( a ); } - float32_t _eosio_i64_to_f32( int64_t a ) { return i64_to_f32( a ); } - float32_t _eosio_ui32_to_f32( uint32_t a ) { return ui32_to_f32( a ); } - float32_t _eosio_ui64_to_f32( uint64_t a ) { return ui64_to_f32( a ); } - float64_t _eosio_i32_to_f64( int32_t a ) { return i32_to_f64( a ); } - float64_t _eosio_i64_to_f64( int64_t a ) { return i64_to_f64( a ); } - float64_t _eosio_ui32_to_f64( uint32_t a ) { return ui32_to_f64( a ); } - float64_t _eosio_ui64_to_f64( uint64_t a ) { return ui64_to_f64( a ); } + double _eosio_f32_promote( float a ) { + return from_softfloat64(f32_to_f64( to_softfloat32(a)) ); + } + float _eosio_f64_demote( double a ) { + return from_softfloat32(f64_to_f32( to_softfloat64(a)) ); + } + int32_t _eosio_f32_trunc_i32s( float af ) { + float32_t a = to_softfloat32(af); + if (a.v == 0x4F000000 || a.v == 0xCF000001 || a.v == 0x7F800000 || a.v == 0xFF800000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 unrepresentable"); + return f32_to_i32( to_softfloat32(_eosio_f32_trunc( af )), 0, false ); + } + int32_t _eosio_f64_trunc_i32s( double af ) { + float64_t a = to_softfloat64(af); + if (a.v == 0x41E0000000000000 || a.v == 0xC1E0000000200000 || a.v == 0x7FF0000000000000 || a.v == 0xFFF0000000000000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f64.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f64.convert_s/i32 unrepresentable"); + return f64_to_i32( to_softfloat64(_eosio_f64_trunc( af )), 0, false ); + } + uint32_t _eosio_f32_trunc_i32u( float af ) { + float32_t a = to_softfloat32(af); + if (a.v == 0x4F000000 || a.v == 0xCF000001 || a.v == 0x7F800000 || a.v == 0xFF800000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 unrepresentable"); + return f32_to_ui32( to_softfloat32(_eosio_f32_trunc( af )), 0, false ); + } + uint32_t _eosio_f64_trunc_i32u( double af ) { + float64_t a = to_softfloat64(af); + if (a.v == 0x41E0000000000000 || a.v == 0xC1E0000000200000 || a.v == 0x7FF0000000000000 || a.v == 0xFFF0000000000000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f64.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f64.convert_s/i32 unrepresentable"); + return f64_to_ui32( to_softfloat64(_eosio_f64_trunc( af )), 0, false ); + } + int64_t _eosio_f32_trunc_i64s( float af ) { + float32_t a = to_softfloat32(af); + if (a.v == 0x5F000000 || a.v == 0xDF000001|| a.v == 0x7F800000 || a.v == 0xFF800000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 unrepresentable"); + return f32_to_i64( to_softfloat32(_eosio_f32_trunc( af )), 0, false ); + } + int64_t _eosio_f64_trunc_i64s( double af ) { + float64_t a = to_softfloat64(af); + if (a.v == 0x43E0000000000000 || a.v == 0xC3E0000020000000 || a.v == 0x7FF0000000000000 || a.v == 0xFFF0000000000000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 unrepresentable"); + + return f64_to_i64( to_softfloat64(_eosio_f64_trunc( af )), 0, false ); + } + uint64_t _eosio_f32_trunc_i64u( float af ) { + float32_t a = to_softfloat32(af); + if (a.v == 0x5F000000 || a.v == 0xDF000001|| a.v == 0x7F800000 || a.v == 0xFF800000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 unrepresentable"); + return f32_to_ui64( to_softfloat32(_eosio_f32_trunc( af )), 0, false ); + } + uint64_t _eosio_f64_trunc_i64u( double af ) { + float64_t a = to_softfloat64(af); + if (a.v == 0x43E0000000000000 || a.v == 0xC3E0000020000000 || a.v == 0x7FF0000000000000 || a.v == 0xFFF0000000000000) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 overflow"); + if (is_nan(a)) + FC_THROW_EXCEPTION( eosio::chain::wasm_execution_error, "Error, f32.convert_s/i32 unrepresentable"); + return f64_to_ui64( to_softfloat64(_eosio_f64_trunc( af )), 0, false ); + } + float _eosio_i32_to_f32( int32_t a ) { + return from_softfloat32(i32_to_f32( a )); + } + float _eosio_i64_to_f32( int64_t a ) { + return from_softfloat32(i64_to_f32( a )); + } + float _eosio_ui32_to_f32( uint32_t a ) { + return from_softfloat32(ui32_to_f32( a )); + } + float _eosio_ui64_to_f32( uint64_t a ) { + return from_softfloat32(ui64_to_f32( a )); + } + double _eosio_i32_to_f64( int32_t a ) { + return from_softfloat64(i32_to_f64( a )); + } + double _eosio_i64_to_f64( int64_t a ) { + return from_softfloat64(i64_to_f64( a )); + } + double _eosio_ui32_to_f64( uint32_t a ) { + return from_softfloat64(ui32_to_f64( a )); + } + double _eosio_ui64_to_f64( uint64_t a ) { + return from_softfloat64(ui64_to_f64( a )); + } private: - static constexpr float32_t inv_float_eps = { 0x4B000000 }; - static constexpr float64_t inv_double_eps = { 0x4330000000000000 }; + inline float32_t to_softfloat32( float f ) { + return *reinterpret_cast(&f); + } + inline float64_t to_softfloat64( double d ) { + return *reinterpret_cast(&d); + } + inline float from_softfloat32( float32_t f ) { + return *reinterpret_cast(&f); + } + inline double from_softfloat64( float64_t d ) { + return *reinterpret_cast(&d); + } + static constexpr uint32_t inv_float_eps = 0x4B000000; + static constexpr uint64_t inv_double_eps = 0x4330000000000000; + + inline bool sign_bit( float32_t f ) { return f.v >> 31; } + inline bool sign_bit( float64_t f ) { return f.v >> 63; } + inline bool is_nan( float32_t f ) { + return ((f.v & 0x7FFFFFFF) > 0x7F800000); + } + inline bool is_nan( float64_t f ) { + return ((f.v & 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000); + } + }; class producer_api : public context_aware_api { public: @@ -717,8 +674,8 @@ class producer_api : public context_aware_api { class crypto_api : public context_aware_api { public: - explicit crypto_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + explicit crypto_api( apply_context& ctx ) + :context_aware_api(ctx,true){} /** * This method can be optimized out during replay as it has @@ -802,8 +759,8 @@ class string_api : public context_aware_api { class system_api : public context_aware_api { public: - explicit system_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + explicit system_api( apply_context& ctx ) + :context_aware_api(ctx,true){} void abort() { edump(("abort() called")); @@ -818,6 +775,10 @@ class system_api : public context_aware_api { } } + void eosio_exit(int32_t code) { + throw wasm_exit{code}; + } + fc::time_point_sec now() { return context.controller.head_block_time(); } @@ -825,8 +786,8 @@ class system_api : public context_aware_api { class action_api : public context_aware_api { public: - action_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + action_api( apply_context& ctx ) + :context_aware_api(ctx,true){} int read_action_data(array_ptr memory, size_t size) { FC_ASSERT(size > 0); @@ -858,8 +819,8 @@ class action_api : public context_aware_api { class console_api : public context_aware_api { public: - console_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + console_api( apply_context& ctx ) + :context_aware_api(ctx,true){} void prints(null_terminated_ptr str) { context.console_append(str); @@ -882,12 +843,12 @@ class console_api : public context_aware_api { context.console_append(fc::variant(v).get_string()); } - void printdi( uint64_t val ) { - context.console_append(*((double*)&val)); + void printdf( double val ) { + context.console_append(val); } - void printd( float64_t val ) { - context.console_append(*((double*)&val)); + void printff( float val ) { + context.console_append(val); } void printn(const name& value) { @@ -1023,225 +984,10 @@ class database_api : public context_aware_api { DB_API_METHOD_WRAPPERS_SIMPLE_SECONDARY(idx_double, uint64_t) }; - - -template -class db_api : public context_aware_api { - using KeyType = typename ObjectType::key_type; - static constexpr int KeyCount = ObjectType::number_of_keys; - using KeyArrayType = KeyType[KeyCount]; - using ContextMethodType = int(apply_context::*)(const table_id_object&, const account_name&, const KeyType*, const char*, size_t); - - private: - int call(ContextMethodType method, const scope_name& scope, const name& table, account_name bta, array_ptr data, size_t data_len) { - const auto& t_id = context.find_or_create_table(context.receiver, scope, table); - FC_ASSERT(data_len >= KeyCount * sizeof(KeyType), "Data is not long enough to contain keys"); - const KeyType* keys = reinterpret_cast((const char *)data); - - const char* record_data = ((const char*)data) + sizeof(KeyArrayType); - size_t record_len = data_len - sizeof(KeyArrayType); - return (context.*(method))(t_id, bta, keys, record_data, record_len) + sizeof(KeyArrayType); - } - - public: - using context_aware_api::context_aware_api; - - int store(const scope_name& scope, const name& table, const account_name& bta, array_ptr data, size_t data_len) { - auto res = call(&apply_context::store_record, scope, table, bta, data, data_len); - //ilog("STORE [${scope},${code},${table}] => ${res} :: ${HEX}", ("scope",scope)("code",context.receiver)("table",table)("res",res)("HEX", fc::to_hex(data, data_len))); - return res; - } - - int update(const scope_name& scope, const name& table, const account_name& bta, array_ptr data, size_t data_len) { - return call(&apply_context::update_record, scope, table, bta, data, data_len); - } - - int remove(const scope_name& scope, const name& table, const KeyArrayType &keys) { - const auto& t_id = context.find_or_create_table(context.receiver, scope, table); - return context.remove_record(t_id, keys); - } -}; - -template<> -class db_api : public context_aware_api { - using KeyType = std::string; - static constexpr int KeyCount = 1; - using KeyArrayType = KeyType[KeyCount]; - using ContextMethodType = int(apply_context::*)(const table_id_object&, const KeyType*, const char*, size_t); - -/* TODO something weird is going on here, will maybe fix before DB changes or this might get - * totally changed anyway - private: - int call(ContextMethodType method, const scope_name& scope, const name& table, account_name bta, - null_terminated_ptr key, size_t key_len, array_ptr data, size_t data_len) { - const auto& t_id = context.find_or_create_table(context.receiver, scope, table); - const KeyType keys((const char*)key.value, key_len); - - const char* record_data = ((const char*)data); - size_t record_len = data_len; - return (context.*(method))(t_id, bta, &keys, record_data, record_len); - } -*/ - public: - using context_aware_api::context_aware_api; - - int store_str(const scope_name& scope, const name& table, const account_name& bta, - null_terminated_ptr key, uint32_t key_len, array_ptr data, size_t data_len) { - const auto& t_id = context.find_or_create_table(context.receiver, scope, table); - const KeyType keys(key.value, key_len); - const char* record_data = ((const char*)data); - size_t record_len = data_len; - return context.store_record(t_id, bta, &keys, record_data, record_len); - //return call(&apply_context::store_record, scope, table, bta, key, key_len, data, data_len); - } - - int update_str(const scope_name& scope, const name& table, const account_name& bta, - null_terminated_ptr key, uint32_t key_len, array_ptr data, size_t data_len) { - const auto& t_id = context.find_or_create_table(context.receiver, scope, table); - const KeyType keys((const char*)key, key_len); - const char* record_data = ((const char*)data); - size_t record_len = data_len; - return context.update_record(t_id, bta, &keys, record_data, record_len); - //return call(&apply_context::update_record, scope, table, bta, key, key_len, data, data_len); - } - - int remove_str(const scope_name& scope, const name& table, array_ptr &key, uint32_t key_len) { - const auto& t_id = context.find_or_create_table(scope, context.receiver, table); - const KeyArrayType k = {std::string(key, key_len)}; - return context.remove_record(t_id, k); - } -}; - -template -class db_index_api : public context_aware_api { - using KeyType = typename IndexType::value_type::key_type; - static constexpr int KeyCount = IndexType::value_type::number_of_keys; - using KeyArrayType = KeyType[KeyCount]; - using ContextMethodType = int(apply_context::*)(const table_id_object&, KeyType*, char*, size_t); - - - int call(ContextMethodType method, const account_name& code, const scope_name& scope, const name& table, array_ptr data, size_t data_len) { - auto maybe_t_id = context.find_table(code, scope, table); - if (maybe_t_id == nullptr) { - return -1; - } - - const auto& t_id = *maybe_t_id; - FC_ASSERT(data_len >= KeyCount * sizeof(KeyType), "Data is not long enough to contain keys"); - KeyType* keys = reinterpret_cast((char *)data); - - char* record_data = ((char*)data) + sizeof(KeyArrayType); - size_t record_len = data_len - sizeof(KeyArrayType); - - auto res = (context.*(method))(t_id, keys, record_data, record_len); - if (res != -1) { - res += sizeof(KeyArrayType); - } - return res; - } - - public: - using context_aware_api::context_aware_api; - - int load(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::load_record, scope, code, table, data, data_len); - return res; - } - - int front(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::front_record, scope, code, table, data, data_len); - return res; - } - - int back(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::back_record, scope, code, table, data, data_len); - return res; - } - - int next(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::next_record, scope, code, table, data, data_len); - return res; - } - - int previous(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::previous_record, scope, code, table, data, data_len); - return res; - } - - int lower_bound(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::lower_bound_record, scope, code, table, data, data_len); - return res; - } - - int upper_bound(const scope_name& scope, const account_name& code, const name& table, array_ptr data, size_t data_len) { - auto res = call(&apply_context::upper_bound_record, scope, code, table, data, data_len); - return res; - } - -}; - -template<> -class db_index_api : public context_aware_api { - using KeyType = std::string; - static constexpr int KeyCount = 1; - using KeyArrayType = KeyType[KeyCount]; - using ContextMethodType = int(apply_context::*)(const table_id_object&, KeyType*, char*, size_t); - - - int call(ContextMethodType method, const scope_name& scope, const account_name& code, const name& table, - array_ptr &key, uint32_t key_len, array_ptr data, size_t data_len) { - auto maybe_t_id = context.find_table(scope, context.receiver, table); - if (maybe_t_id == nullptr) { - return 0; - } - - const auto& t_id = *maybe_t_id; - //FC_ASSERT(data_len >= KeyCount * sizeof(KeyType), "Data is not long enough to contain keys"); - KeyType keys((const char*)key, key_len); // = reinterpret_cast((char *)data); - - char* record_data = ((char*)data); // + sizeof(KeyArrayType); - size_t record_len = data_len; // - sizeof(KeyArrayType); - - return (context.*(method))(t_id, &keys, record_data, record_len); // + sizeof(KeyArrayType); - } - - public: - using context_aware_api::context_aware_api; - - int load_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - auto res = call(&apply_context::load_record, scope, code, table, key, key_len, data, data_len); - return res; - } - - int front_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::front_record, scope, code, table, key, key_len, data, data_len); - } - - int back_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::back_record, scope, code, table, key, key_len, data, data_len); - } - - int next_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::next_record, scope, code, table, key, key_len, data, data_len); - } - - int previous_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::previous_record, scope, code, table, key, key_len, data, data_len); - } - - int lower_bound_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::lower_bound_record, scope, code, table, key, key_len, data, data_len); - } - - int upper_bound_str(const scope_name& scope, const account_name& code, const name& table, array_ptr key, size_t key_len, array_ptr data, size_t data_len) { - return call(&apply_context::upper_bound_record, scope, code, table, key, key_len, data, data_len); - } -}; - class memory_api : public context_aware_api { public: - memory_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + memory_api( apply_context& ctx ) + :context_aware_api(ctx,true){} char* memcpy( array_ptr dest, array_ptr src, size_t length) { return (char *)::memcpy(dest, src, length); @@ -1258,19 +1004,6 @@ class memory_api : public context_aware_api { char* memset( array_ptr dest, int value, size_t length ) { return (char *)::memset( dest, value, length ); } - - int sbrk(int num_bytes) { - // sbrk should only allow for memory to grow - if (num_bytes < 0) - throw eosio::chain::page_memory_error(); - - switch(vm) { - case wasm_interface::vm_type::wavm: - return (uint32_t)code.wavm.sbrk(num_bytes); - case wasm_interface::vm_type::binaryen: - return (uint32_t)code.binaryen.sbrk(num_bytes); - } - } }; class transaction_api : public context_aware_api { @@ -1304,8 +1037,8 @@ class transaction_api : public context_aware_api { class context_free_transaction_api : public context_aware_api { public: - context_free_transaction_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + context_free_transaction_api( apply_context& ctx ) + :context_aware_api(ctx,true){} int read_transaction( array_ptr data, size_t data_len ) { bytes trx = context.get_packed_transaction(); @@ -1510,9 +1243,10 @@ class compiler_builtins : public context_aware_api { return 1; return 0; } - float64_t __floatsidf( int32_t i ) { + double __floatsidf( int32_t i ) { edump((i)( "warning returning float64") ); - return i32_to_f64(i); + float64_t ret = i32_to_f64(i); + return *reinterpret_cast(&ret); } void __floatsitf( float128_t& ret, int32_t i ) { ret = i32_to_f128(i); /// TODO: should be 128 @@ -1520,19 +1254,13 @@ class compiler_builtins : public context_aware_api { void __floatunsitf( float128_t& ret, uint32_t i ) { ret = ui32_to_f128(i); /// TODO: should be 128 } - /* - float128_t __floatsit( int32_t i ) { - return i32_to_f128(i); - } - */ void __extendsftf2( float128_t& ret, uint32_t f ) { float32_t in = { f }; ret = f32_to_f128( in ); } - void __extenddftf2( float128_t& ret, float64_t in ) { + void __extenddftf2( float128_t& ret, double in ) { edump(("warning in flaot64..." )); -// float64_t in = { f }; - ret = f64_to_f128( in ); + ret = f64_to_f128( float64_t{*(uint64_t*)&in} ); } int64_t __fixtfdi( uint64_t l, uint64_t h ) { float128_t f = {{ l, h }}; @@ -1564,8 +1292,8 @@ class compiler_builtins : public context_aware_api { class math_api : public context_aware_api { public: - math_api( wasm_interface& wasm ) - :context_aware_api(wasm,true){} + math_api( apply_context& ctx ) + :context_aware_api(ctx,true){} void diveq_i128(unsigned __int128* self, const unsigned __int128* other) { fc::uint128_t s(*self); @@ -1671,9 +1399,9 @@ REGISTER_INTRINSICS(compiler_builtins, (__unordtf2, int(int64_t, int64_t, int64_t, int64_t) ) (__floatsitf, void (int, int) ) (__floatunsitf, void (int, int) ) - (__floatsidf, float64_t(int) ) + (__floatsidf, double(int) ) (__extendsftf2, void(int, int) ) - (__extenddftf2, void(int, float64_t) ) + (__extenddftf2, void(int, double) ) (__fixtfdi, int64_t(int64_t, int64_t) ) (__fixtfsi, int(int64_t, int64_t) ) (__fixunstfdi, int64_t(int64_t, int64_t) ) @@ -1763,6 +1491,7 @@ REGISTER_INTRINSICS(string_api, REGISTER_INTRINSICS(system_api, (abort, void()) (eosio_assert, void(int, int)) + (eosio_exit, void(int )) (now, int()) ); @@ -1783,14 +1512,15 @@ REGISTER_INTRINSICS(apply_context, (is_account, int(int64_t) ) ); + //(printdi, void(int64_t) ) REGISTER_INTRINSICS(console_api, (prints, void(int) ) (prints_l, void(int, int) ) (printui, void(int64_t) ) (printi, void(int64_t) ) (printi128, void(int) ) - (printd, void(float64_t) ) - (printdi, void(int64_t) ) + (printdf, void(double) ) + (printff, void(float) ) (printn, void(int64_t) ) (printhex, void(int, int) ) ); @@ -1818,63 +1548,79 @@ REGISTER_INTRINSICS(memory_api, (memmove, int(int, int, int) ) (memcmp, int(int, int, int) ) (memset, int(int, int, int) ) - (sbrk, int(int) ) ); -#define DB_METHOD_SEQ(SUFFIX) \ - (store, int32_t(int64_t, int64_t, int64_t, int, int), "store_"#SUFFIX ) \ - (update, int32_t(int64_t, int64_t, int64_t, int, int), "update_"#SUFFIX ) \ - (remove, int32_t(int64_t, int64_t, int), "remove_"#SUFFIX ) - -#define DB_INDEX_METHOD_SEQ(SUFFIX)\ - (load, int32_t(int64_t, int64_t, int64_t, int, int), "load_"#SUFFIX )\ - (front, int32_t(int64_t, int64_t, int64_t, int, int), "front_"#SUFFIX )\ - (back, int32_t(int64_t, int64_t, int64_t, int, int), "back_"#SUFFIX )\ - (previous, int32_t(int64_t, int64_t, int64_t, int, int), "previous_"#SUFFIX )\ - (lower_bound, int32_t(int64_t, int64_t, int64_t, int, int), "lower_bound_"#SUFFIX )\ - (upper_bound, int32_t(int64_t, int64_t, int64_t, int, int), "upper_bound_"#SUFFIX )\ - -using db_api_key_value_object = db_api; -using db_api_keystr_value_object = db_api; -using db_api_key128x128_value_object = db_api; -using db_api_key64x64_value_object = db_api; -using db_api_key64x64x64_value_object = db_api; -using db_index_api_key_value_index_by_scope_primary = db_index_api; -using db_index_api_keystr_value_index_by_scope_primary = db_index_api; -using db_index_api_key128x128_value_index_by_scope_primary = db_index_api; -using db_index_api_key128x128_value_index_by_scope_secondary = db_index_api; -using db_index_api_key64x64_value_index_by_scope_primary = db_index_api; -using db_index_api_key64x64_value_index_by_scope_secondary = db_index_api; -using db_index_api_key64x64x64_value_index_by_scope_primary = db_index_api; -using db_index_api_key64x64x64_value_index_by_scope_secondary = db_index_api; -using db_index_api_key64x64x64_value_index_by_scope_tertiary = db_index_api; - -REGISTER_INTRINSICS(db_api_key_value_object, DB_METHOD_SEQ(i64)); -REGISTER_INTRINSICS(db_api_key128x128_value_object, DB_METHOD_SEQ(i128i128)); -REGISTER_INTRINSICS(db_api_key64x64_value_object, DB_METHOD_SEQ(i64i64)); -REGISTER_INTRINSICS(db_api_key64x64x64_value_object, DB_METHOD_SEQ(i64i64i64)); -REGISTER_INTRINSICS(db_api_keystr_value_object, - (store_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (update_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (remove_str, int32_t(int64_t, int64_t, int, int) )); - -REGISTER_INTRINSICS(db_index_api_key_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(i64)); -REGISTER_INTRINSICS(db_index_api_keystr_value_index_by_scope_primary, - (load_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (front_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (back_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (next_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (previous_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (lower_bound_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) ) - (upper_bound_str, int32_t(int64_t, int64_t, int64_t, int, int, int, int) )); - -REGISTER_INTRINSICS(db_index_api_key128x128_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(primary_i128i128)); -REGISTER_INTRINSICS(db_index_api_key128x128_value_index_by_scope_secondary, DB_INDEX_METHOD_SEQ(secondary_i128i128)); -REGISTER_INTRINSICS(db_index_api_key64x64_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(primary_i64i64)); -REGISTER_INTRINSICS(db_index_api_key64x64_value_index_by_scope_secondary, DB_INDEX_METHOD_SEQ(secondary_i64i64)); -REGISTER_INTRINSICS(db_index_api_key64x64x64_value_index_by_scope_primary, DB_INDEX_METHOD_SEQ(primary_i64i64i64)); -REGISTER_INTRINSICS(db_index_api_key64x64x64_value_index_by_scope_secondary, DB_INDEX_METHOD_SEQ(secondary_i64i64i64)); -REGISTER_INTRINSICS(db_index_api_key64x64x64_value_index_by_scope_tertiary, DB_INDEX_METHOD_SEQ(tertiary_i64i64i64)); +REGISTER_INTRINSICS(softfloat_api, + (_eosio_f32_add, float(float, float) ) + (_eosio_f32_sub, float(float, float) ) + (_eosio_f32_mul, float(float, float) ) + (_eosio_f32_div, float(float, float) ) + (_eosio_f32_min, float(float, float) ) + (_eosio_f32_max, float(float, float) ) + (_eosio_f32_copysign, float(float, float) ) + (_eosio_f32_abs, float(float) ) + (_eosio_f32_neg, float(float) ) + (_eosio_f32_sqrt, float(float) ) + (_eosio_f32_ceil, float(float) ) + (_eosio_f32_floor, float(float) ) + (_eosio_f32_trunc, float(float) ) + (_eosio_f32_nearest, float(float) ) + (_eosio_f32_eq, int(float, float) ) + (_eosio_f32_ne, int(float, float) ) + (_eosio_f32_lt, int(float, float) ) + (_eosio_f32_le, int(float, float) ) + (_eosio_f32_gt, int(float, float) ) + (_eosio_f32_ge, int(float, float) ) + (_eosio_f64_add, double(double, double) ) + (_eosio_f64_sub, double(double, double) ) + (_eosio_f64_mul, double(double, double) ) + (_eosio_f64_div, double(double, double) ) + (_eosio_f64_min, double(double, double) ) + (_eosio_f64_max, double(double, double) ) + (_eosio_f64_copysign, double(double, double) ) + (_eosio_f64_abs, double(double) ) + (_eosio_f64_neg, double(double) ) + (_eosio_f64_sqrt, double(double) ) + (_eosio_f64_ceil, double(double) ) + (_eosio_f64_floor, double(double) ) + (_eosio_f64_trunc, double(double) ) + (_eosio_f64_nearest, double(double) ) + (_eosio_f64_eq, int(double, double) ) + (_eosio_f64_ne, int(double, double) ) + (_eosio_f64_lt, int(double, double) ) + (_eosio_f64_le, int(double, double) ) + (_eosio_f64_gt, int(double, double) ) + (_eosio_f64_ge, int(double, double) ) + (_eosio_f32_promote, double(float) ) + (_eosio_f64_demote, float(double) ) + (_eosio_f32_trunc_i32s, int(float) ) + (_eosio_f64_trunc_i32s, int(double) ) + (_eosio_f32_trunc_i32u, int(float) ) + (_eosio_f64_trunc_i32u, int(double) ) + (_eosio_f32_trunc_i64s, int64_t(float) ) + (_eosio_f64_trunc_i64s, int64_t(double) ) + (_eosio_f32_trunc_i64u, int64_t(float) ) + (_eosio_f64_trunc_i64u, int64_t(double) ) + (_eosio_i32_to_f32, float(int32_t) ) + (_eosio_i64_to_f32, float(int64_t) ) + (_eosio_ui32_to_f32, float(int32_t) ) + (_eosio_ui64_to_f32, float(int64_t) ) + (_eosio_i32_to_f64, double(int32_t) ) + (_eosio_i64_to_f64, double(int64_t) ) + (_eosio_ui32_to_f64, double(int32_t) ) + (_eosio_ui64_to_f64, double(int64_t) ) +); +std::istream& operator>>(std::istream& in, wasm_interface::vm_type& runtime) { + std::string s; + in >> s; + if (s == "wavm") + runtime = eosio::chain::wasm_interface::vm_type::wavm; + else if (s == "binaryen") + runtime = eosio::chain::wasm_interface::vm_type::binaryen; + else + in.setstate(std::ios_base::failbit); + return in; +} } } /// eosio::chain diff --git a/libraries/chain/wast_to_wasm.cpp b/libraries/chain/wast_to_wasm.cpp index 37b290bcddb4cb94e06b107aef7710a4bd7a615b..d02d7bf1396717ec6b8048c4bfc3a10ec854c26b 100644 --- a/libraries/chain/wast_to_wasm.cpp +++ b/libraries/chain/wast_to_wasm.cpp @@ -33,7 +33,7 @@ namespace eosio { namespace chain { ss << error.locus.sourceLine << std::endl; ss << std::setw(error.locus.column(8)) << "^" << std::endl; } - FC_ASSERT( !"error parsing wast", "${msg}", ("msg",ss.get()) ); + FC_ASSERT( !"error parsing wast", "${msg}", ("msg",ss.str()) ); } for(auto sectionIt = module.userSections.begin();sectionIt != module.userSections.end();++sectionIt) diff --git a/libraries/chain/webassembly/binaryen.cpp b/libraries/chain/webassembly/binaryen.cpp index 822599fc0382aa5ab0e892a6a243cf7c0440841f..921a3fb1998f07e88b35ae1a7333da1d86bf9094 100644 --- a/libraries/chain/webassembly/binaryen.cpp +++ b/libraries/chain/webassembly/binaryen.cpp @@ -6,155 +6,56 @@ namespace eosio { namespace chain { namespace webassembly { namespace binaryen { -void entry::call(const string &entry_point, LiteralList& args, apply_context &context) -{ - interpreter_interface local_interface(memory, table, import_lut, sbrk_bytes); - interface = &local_interface; - interpreter_instance local_instance(*module.get(), interface); - instance = &local_instance; - local_instance.callExport(Name(entry_point), args); -} - -void entry::call_apply(apply_context& context) -{ - LiteralList args = {Literal(uint64_t(context.act.account)), - Literal(uint64_t(context.act.name))}; - - call("apply", args, context); -} - -void entry::call_error(apply_context& context) -{ - LiteralList args = {/* */}; - call("error", args, context); -} - -int entry::sbrk(int num_bytes) { - // TODO: omitted checktime function from previous version of sbrk, may need to be put back in at some point - constexpr uint32_t NBPPL2 = 16; - const uint32_t num_pages = module->memory.initial; - const uint32_t prev_num_bytes = sbrk_bytes; //_num_bytes; - - // round the absolute value of num_bytes to an alignment boundary - num_bytes = (num_bytes + 7) & ~7; - - if ((num_bytes > 0) && (prev_num_bytes > (wasm_constraints::maximum_linear_memory - num_bytes))) // test if allocating too much memory (overflowed) - return -1; - - // update the number of bytes allocated, and compute the number of pages needed - - auto num_accessible_pages = (sbrk_bytes + num_bytes + Memory::kPageSize - 1) >> NBPPL2; - if(num_accessible_pages > module->memory.max) - return -1; - instance->set_accessible_pages(num_accessible_pages); - sbrk_bytes += num_bytes; - return prev_num_bytes; -} - -void entry::reset(const info& base_info) { - const auto& image = base_info.mem_image; - char *base = memory.data; - memcpy(base, image.data(), image.size()); - if (sbrk_bytes > image.size()) { - memset(memory.data + image.size(), 0, sbrk_bytes - image.size()); - } - sbrk_bytes = base_info.default_sbrk_bytes; - interface = nullptr; -} +class binaryen_instantiated_module : public wasm_instantiated_module_interface { + public: + binaryen_instantiated_module(linear_memory_type& shared_linear_memory, + std::vector initial_memory, + call_indirect_table_type table, + import_lut_type import_lut, + unique_ptr&& module) : + _shared_linear_memory(shared_linear_memory), + _initial_memory(initial_memory), + _table(forward(table)), + _import_lut(forward(import_lut)), + _module(forward(module)) { -void entry::prepare( const info& base_info) { -} - -static Expression* create_call_checktime(Import *checktime, Module &module) { - // create a calling expression - CallImport *call = module.allocator.alloc(); - Const *value = module.allocator.alloc(); - value->finalize(); - - value->set(Literal(11)); - call->target = checktime->name; - call->operands.resize(1); - call->operands[0] = value; - call->type = WasmType::none; - call->finalize(); - return call; -} - -static Block* convert_to_injected_block(Expression *expr, Import *checktime, Module &module) { - Block *block = module.allocator.alloc(); - block->list.push_back(create_call_checktime(checktime, module)); - block->list.push_back(expr); - block->finalize(); - return block; -} - -static void inject_checktime_block(Block *block, Import *checktime, Module &module) -{ - auto old_size = block->list.size(); - block->list.resize(block->list.size() + 1); - if (old_size > 0) { - memmove(&block->list[1], &block->list[0], old_size * sizeof(Expression *)); - } - - block->list[0] = create_call_checktime(checktime, module); - - for (int i = 1; i < block->list.size(); i++) { - auto* expr = block->list[i]; - if (expr->is()) { - inject_checktime_block(expr->cast(), checktime, module); - } else if (expr->is()) { - Loop *loop = expr->cast(); - if (loop->body->is()) { - inject_checktime_block(loop->body->cast(), checktime, module); - } else { - loop->body = convert_to_injected_block(loop->body, checktime, module); - } } - } -} -static void inject_checktime(Module& module) -{ - // find an appropriate function type - FunctionType* type = nullptr; - for (auto &t: module.functionTypes) { - if (t->result == WasmType::none && t->params.size() == 1 && t->params.at(0) == WasmType::i32) { - type = t.get(); + void apply(apply_context& context) override { + LiteralList args = {Literal(uint64_t(context.act.account)), + Literal(uint64_t(context.act.name))}; + call("apply", args, context); } - } - if (!type) { - // create the type - type = new FunctionType(); - type->name = Name(string("checktime-injected")); - type->params.push_back(WasmType::i32); - type->result = WasmType::none; - module.addFunctionType(type); - } - - // inject the import - Import *import = new Import(); - import->name = Name(string("checktime")); - import->module = Name(string("env")); - import->base = Name(string("checktime")); - import->kind = ExternalKind::Function; - import->functionType = type->name; - module.addImport(import); - - // walk the ops and inject the callImport on function bodies, blocks and loops - for(auto &fn: module.functions) { - if (fn->body->is()) { - inject_checktime_block(fn->body->cast(), import, module); - } else { - fn->body = convert_to_injected_block(fn->body, import, module); + private: + linear_memory_type& _shared_linear_memory; + std::vector _initial_memory; + call_indirect_table_type _table; + import_lut_type _import_lut; + unique_ptr _module; + + void call(const string& entry_point, LiteralList& args, apply_context& context){ + const unsigned initial_memory_size = _module->memory.initial*Memory::kPageSize; + interpreter_interface local_interface(_shared_linear_memory, _table, _import_lut, initial_memory_size, context); + + //zero out the initial pages + memset(_shared_linear_memory.data, 0, initial_memory_size); + //copy back in the initial data + memcpy(_shared_linear_memory.data, _initial_memory.data(), _initial_memory.size()); + + //be aware that construction of the ModuleInstance implictly fires the start function + ModuleInstance instance(*_module.get(), &local_interface); + instance.callExport(Name(entry_point), args); } - } +}; + +binaryen_runtime::binaryen_runtime() { } -entry entry::build(const char* wasm_binary, size_t wasm_binary_size) { +std::unique_ptr binaryen_runtime::instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) { try { - vector code(wasm_binary, wasm_binary + wasm_binary_size); + vector code(code_bytes, code_bytes + code_size); unique_ptr module(new Module()); WasmBinaryBuilder builder(*module, code, false); builder.read(); @@ -167,17 +68,6 @@ entry entry::build(const char* wasm_binary, size_t wasm_binary_size) { globals[global->name] = ConstantExpressionRunner(globals).visit(global->init).value; } - // initialize the linear memory - linear_memory_type memory; - memset(memory.data, 0, module->memory.initial * Memory::kPageSize); - for(size_t i = 0; i < module->memory.segments.size(); i++ ) { - const auto& segment = module->memory.segments.at(i); - Address offset = ConstantExpressionRunner(globals).visit(segment.offset).value.geti32(); - char *base = memory.data + offset; - FC_ASSERT(offset + segment.data.size() <= wasm_constraints::maximum_linear_memory); - memcpy(base, segment.data.data(), segment.data.size()); - } - call_indirect_table_type table; table.resize(module->table.initial); for (auto& segment : module->table.segments) { @@ -204,23 +94,10 @@ entry entry::build(const char* wasm_binary, size_t wasm_binary_size) { FC_ASSERT( !"unresolvable", "${module}.${export}", ("module",import->module.c_str())("export",import->base.c_str()) ); } - uint32_t sbrk_bytes = module->memory.initial * Memory::kPageSize; - - return entry(move(module), std::move(memory), std::move(table), std::move(import_lut), sbrk_bytes); + return std::make_unique(_memory, initial_memory, move(table), move(import_lut), move(module)); } catch (const ParseException &e) { FC_THROW_EXCEPTION(wasm_execution_error, "Error building interpreter: ${s}", ("s", e.text)); } -}; - -entry::entry(unique_ptr&& module, linear_memory_type&& memory, call_indirect_table_type&& table, import_lut_type&& import_lut, uint32_t sbrk_bytes) -:module(forward(module)) -,memory(forward(memory)) -,table (forward(table)) -,import_lut(forward(import_lut)) -,interface(nullptr) -,sbrk_bytes(sbrk_bytes) -{ - } }}}} diff --git a/libraries/chain/webassembly/wavm.cpp b/libraries/chain/webassembly/wavm.cpp index 593b3a0a4fdb557b2c2de8cd5ce98a2815b2e0ae..93374bd21f2243ffa0e84126e13c3922e3c5f335 100644 --- a/libraries/chain/webassembly/wavm.cpp +++ b/libraries/chain/webassembly/wavm.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "IR/Module.h" #include "Platform/Platform.h" @@ -17,141 +18,89 @@ using namespace Runtime; namespace eosio { namespace chain { namespace webassembly { namespace wavm { -/** - * Integration with the WASM Linker to resolve our intrinsics - */ -struct root_resolver : Runtime::Resolver -{ - bool resolve(const string& mod_name, - const string& export_name, - ObjectType type, - ObjectInstance*& out) override - { try { - // Try to resolve an intrinsic first. - if(IntrinsicResolver::singleton.resolve(mod_name,export_name,type, out)) { - return true; - } - FC_ASSERT( !"unresolvable", "${module}.${export}", ("module",mod_name)("export",export_name) ); - return false; - } FC_CAPTURE_AND_RETHROW( (mod_name)(export_name) ) } -}; +running_instance_context the_running_instance_context; + +class wavm_instantiated_module : public wasm_instantiated_module_interface { + public: + wavm_instantiated_module(ModuleInstance* instance, Module* module, std::vector initial_mem) : + _initial_memory(initial_mem), + _instance(instance), + _module(module) + {} + + void apply(apply_context& context) override { + vector args = {Value(uint64_t(context.act.account)), + Value(uint64_t(context.act.name))}; -void entry::call(const string &entry_point, const vector &args, apply_context &context) -{ - try { - FunctionInstance* call = asFunctionNullable(getInstanceExport(instance,entry_point) ); - if( !call ) { - return; + call("apply", args, context); } - FC_ASSERT( getFunctionType(call)->parameters.size() == args.size() ); + ~wavm_instantiated_module() { + delete _module; + //_instance is deleted via WAVM's object garbage collection when wavm_rutime is deleted + } - runInstanceStartFunc(instance); - Runtime::invokeFunction(call,args); - } catch( const Runtime::Exception& e ) { - FC_THROW_EXCEPTION(wasm_execution_error, + private: + void call(const string &entry_point, const vector &args, apply_context &context) { + try { + FunctionInstance* call = asFunctionNullable(getInstanceExport(_instance,entry_point)); + if( !call ) + return; + + FC_ASSERT( getFunctionType(call)->parameters.size() == args.size() ); + + //The memory instance is reused across all wavm_instantiated_modules, but for wasm instances + // that didn't declare "memory", getDefaultMemory() won't see it + MemoryInstance* default_mem = getDefaultMemory(_instance); + if(default_mem) { + //reset memory resizes the sandbox'ed memory to the module's init memory size and then + // (effectively) memzeros it all + resetMemory(default_mem, _module->memories.defs[0].type); + + char* memstart = &memoryRef(getDefaultMemory(_instance), 0); + memcpy(memstart, _initial_memory.data(), _initial_memory.size()); + } + + the_running_instance_context.memory = default_mem; + the_running_instance_context.apply_ctx = &context; + + resetGlobalInstances(_instance); + runInstanceStartFunc(_instance); + Runtime::invokeFunction(call,args); + } catch( const wasm_exit& e ) { + } catch( const Runtime::Exception& e ) { + FC_THROW_EXCEPTION(wasm_execution_error, "cause: ${cause}\n${callstack}", ("cause", string(describeExceptionCause(e.cause))) ("callstack", e.callStack)); - } FC_CAPTURE_AND_RETHROW() -} - -void entry::call_apply(apply_context& context) -{ - vector args = {Value(uint64_t(context.act.account)), - Value(uint64_t(context.act.name))}; - - call("apply", args, context); -} - -void entry::call_error(apply_context& context) -{ - vector args = {/* */}; - call("error", args, context); -} - -int entry::sbrk(int num_bytes) { - // TODO: omitted checktime function from previous version of sbrk, may need to be put back in at some point - constexpr uint32_t NBPPL2 = IR::numBytesPerPageLog2; - - MemoryInstance* default_mem = Runtime::getDefaultMemory(instance); - if(!default_mem) - return -1; - - const uint32_t num_pages = Runtime::getMemoryNumPages(default_mem); - const uint32_t prev_num_bytes = sbrk_bytes; //_num_bytes; - - // round the absolute value of num_bytes to an alignment boundary - num_bytes = (num_bytes + 7) & ~7; - - if ((num_bytes > 0) && (prev_num_bytes > (wasm_constraints::maximum_linear_memory - num_bytes))) // test if allocating too much memory (overflowed) - return -1; - - const uint32_t num_desired_pages = (sbrk_bytes + num_bytes + IR::numBytesPerPage - 1) >> NBPPL2; - - if(Runtime::growMemory(default_mem, num_desired_pages - num_pages) == -1) - return -1; - - sbrk_bytes += num_bytes; - - return prev_num_bytes; + } FC_CAPTURE_AND_RETHROW() + } -} + std::vector _initial_memory; + //naked pointers because ModuleInstance is opaque + ModuleInstance* _instance; + Module* _module; +}; -void entry::reset(const info& base_info) { - MemoryInstance* default_mem = getDefaultMemory(instance); - if(default_mem) { - shrinkMemory(default_mem, getMemoryNumPages(default_mem) - 1); - } +wavm_runtime::wavm_runtime() { + Runtime::init(); } -void entry::prepare( const info& base_info ) { - resetGlobalInstances(instance); - MemoryInstance* memory_instance = getDefaultMemory(instance); - if(memory_instance) { - resetMemory(memory_instance, module->memories.defs[0].type); - - char* memstart = &memoryRef(getDefaultMemory(instance), 0); - memcpy(memstart, base_info.mem_image.data(), base_info.mem_image.size()); - sbrk_bytes = Runtime::getMemoryNumPages(memory_instance) << IR::numBytesPerPageLog2; - } +wavm_runtime::~wavm_runtime() { + Runtime::freeUnreferencedObjects({}); } -entry entry::build(const char* wasm_binary, size_t wasm_binary_size) { +std::unique_ptr wavm_runtime::instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) { Module* module = new Module(); - Serialization::MemoryInputStream stream((const U8 *) wasm_binary, wasm_binary_size); + Serialization::MemoryInputStream stream((const U8 *)code_bytes, code_size); WASM::serialize(stream, *module); - root_resolver resolver; + eosio::chain::webassembly::common::root_resolver resolver; LinkResult link_result = linkModule(*module, resolver); ModuleInstance *instance = instantiateModule(*module, std::move(link_result.resolvedImports)); FC_ASSERT(instance != nullptr); - return entry(instance, module, 0); -}; - -info::info( const entry &wavm ) -{ - default_sbrk_bytes = wavm.sbrk_bytes; - const auto* module = wavm.module; - - //populate the module's data segments in to a vector so the initial state can be - // restored on each invocation - //Be Warned, this may need to be revisited when module imports make sense. The - // code won't handle data segments that initalize an imported memory which I think - // is valid. - for(const DataSegment& data_segment : module->dataSegments) { - FC_ASSERT(data_segment.baseOffset.type == InitializerExpression::Type::i32_const); - FC_ASSERT(module->memories.defs.size()); - const U32 base_offset = data_segment.baseOffset.i32; - const Uptr memory_size = (module->memories.defs[0].type.size.min << IR::numBytesPerPageLog2); - if (base_offset >= memory_size || base_offset + data_segment.data.size() > memory_size) - FC_THROW_EXCEPTION(wasm_execution_error, "WASM data segment outside of valid memory range"); - if (base_offset + data_segment.data.size() > mem_image.size()) - mem_image.resize(base_offset + data_segment.data.size(), 0x00); - memcpy(mem_image.data() + base_offset, data_segment.data.data(), data_segment.data.size()); - } + return std::make_unique(instance, module, initial_memory); } - }}}} diff --git a/libraries/egenesis/CMakeLists.txt b/libraries/egenesis/CMakeLists.txt deleted file mode 100644 index cf965e1e520d50c3060e03947cbcf04a46624eab..0000000000000000000000000000000000000000 --- a/libraries/egenesis/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ - -add_library( eos_egenesis_none - egenesis_none.cpp - include/eosio/egenesis/egenesis.hpp - ) - -target_link_libraries( eos_egenesis_none eosio_chain fc ) -target_include_directories( eos_egenesis_none - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -add_executable( embed_genesis - embed_genesis.cpp - ) - -target_link_libraries( embed_genesis eosio_chain eos_egenesis_none fc ) - -set( embed_genesis_args - -t "${CMAKE_CURRENT_SOURCE_DIR}/egenesis_brief.cpp.tmpl---${CMAKE_CURRENT_BINARY_DIR}/egenesis_brief.cpp" - -t "${CMAKE_CURRENT_SOURCE_DIR}/egenesis_full.cpp.tmpl---${CMAKE_CURRENT_BINARY_DIR}/egenesis_full.cpp" - ) - -MESSAGE( STATUS "egenesis: " ${EOS_EGENESIS_JSON} ) - -if( EOS_EGENESIS_JSON ) - list( APPEND embed_genesis_args --genesis-json "${EOS_EGENESIS_JSON}" ) -endif( EOS_EGENESIS_JSON ) - -MESSAGE( STATUS "embed_genesis_args: " ${embed_genesis_args} ) - -add_custom_command( - OUTPUT - "${CMAKE_CURRENT_BINARY_DIR}/egenesis_brief.cpp" - "${CMAKE_CURRENT_BINARY_DIR}/egenesis_full.cpp" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND embed_genesis ${embed_genesis_args} - DEPENDS - "${EOS_EGENESIS_JSON}" - "${CMAKE_CURRENT_SOURCE_DIR}/egenesis_brief.cpp.tmpl" - "${CMAKE_CURRENT_SOURCE_DIR}/egenesis_full.cpp.tmpl" - embed_genesis ) - -add_library( eos_egenesis_brief "${CMAKE_CURRENT_BINARY_DIR}/egenesis_brief.cpp" include/eosio/egenesis/egenesis.hpp ) -add_library( eos_egenesis_full "${CMAKE_CURRENT_BINARY_DIR}/egenesis_full.cpp" include/eosio/egenesis/egenesis.hpp ) - -target_link_libraries( eos_egenesis_brief eosio_chain fc ) -target_link_libraries( eos_egenesis_full eosio_chain fc ) - -target_include_directories( eos_egenesis_brief - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) -target_include_directories( eos_egenesis_full - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/egenesis/egenesis_brief.cpp.tmpl b/libraries/egenesis/egenesis_brief.cpp.tmpl deleted file mode 100644 index 2dde324154de36bfa1c6d4eecd342ce4968e5c33..0000000000000000000000000000000000000000 --- a/libraries/egenesis/egenesis_brief.cpp.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -${generated_file_banner} -/* - * Copyright (c) 2015, Cryptonomex, Inc. - * All rights reserved. - * - * This source code is provided for evaluation in private test networks only, until September 8, 2015. After this date, this license expires and - * the code may not be used, modified or distributed for any purpose. Redistribution and use in source and binary forms, with or without modification, - * are permitted until September 8, 2015, provided that the following conditions are met: - * - * 1. The code and/or derivative works are used only for private test networks consisting of no more than 10 P2P nodes. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -namespace eosio { namespace egenesis { - -using namespace eosio::chain; - -chain_id_type get_egenesis_chain_id() -{ - return chain_id_type( "${chain_id}$" ); -} - -void compute_egenesis_json( std::string& result ) -{ - result = ""; -} - -fc::sha256 get_egenesis_json_hash() -{ - return fc::sha256( "${genesis_json_hash}" ); -} - -} } diff --git a/libraries/egenesis/egenesis_full.cpp.tmpl b/libraries/egenesis/egenesis_full.cpp.tmpl deleted file mode 100644 index 43747fd11c97d011119c39dcd71109ea40d0ef48..0000000000000000000000000000000000000000 --- a/libraries/egenesis/egenesis_full.cpp.tmpl +++ /dev/null @@ -1,54 +0,0 @@ -${generated_file_banner} -/* - * Copyright (c) 2015, Cryptonomex, Inc. - * All rights reserved. - * - * This source code is provided for evaluation in private test networks only, until September 8, 2015. After this date, this license expires and - * the code may not be used, modified or distributed for any purpose. Redistribution and use in source and binary forms, with or without modification, - * are permitted until September 8, 2015, provided that the following conditions are met: - * - * 1. The code and/or derivative works are used only for private test networks consisting of no more than 10 P2P nodes. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -namespace eosio { namespace egenesis { - -using namespace eosio::chain; - -static const char genesis_json_array[${genesis_json_array_height}$][${genesis_json_array_width}$+1] = -{ -${genesis_json_array}$ -}; - -chain_id_type get_egenesis_chain_id() -{ - return chain_id_type( "${chain_id}$" ); -} - -void compute_egenesis_json( std::string& result ) -{ - result.reserve( ${genesis_json_length}$ ); - result.resize(0); - for( size_t i=0; i<${genesis_json_array_height}$-1; i++ ) - { - result.append( genesis_json_array[i], ${genesis_json_array_width}$ ); - } - result.append( std::string( genesis_json_array[ ${genesis_json_array_height}$-1 ] ) ); - return; -} - -fc::sha256 get_egenesis_json_hash() -{ - return fc::sha256( "${genesis_json_hash}" ); -} - -} } diff --git a/libraries/egenesis/egenesis_none.cpp b/libraries/egenesis/egenesis_none.cpp deleted file mode 100644 index 5f6bc28395948a1610781add8709915922f74141..0000000000000000000000000000000000000000 --- a/libraries/egenesis/egenesis_none.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ - -#include - -namespace eosio { namespace egenesis { - -using namespace eosio::chain; - -chain_id_type get_egenesis_chain_id() -{ - return chain_id_type(); -} - -void compute_egenesis_json( std::string& result ) -{ - result = ""; -} - -fc::sha256 get_egenesis_json_hash() -{ - return fc::sha256::hash( "" ); -} - -} } diff --git a/libraries/egenesis/embed_genesis.cpp b/libraries/egenesis/embed_genesis.cpp deleted file mode 100644 index 06b3cae732f2208c641afc927aaf88fc3eb0b6db..0000000000000000000000000000000000000000 --- a/libraries/egenesis/embed_genesis.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include // required for gcc in release mode -#include -#include -#include - -using namespace eosio::chain; -using eosio::chain::contracts::genesis_state_type; - -static const char generated_file_banner[] = -"// _ _ __ _ _ //\n" -"// | | | | / _(_) | //\n" -"// __ _ ___ _ __ ___ _ __ __ _| |_ ___ __| | | |_ _| | ___ //\n" -"// / _` |/ _ \\ '_ \\ / _ \\ '__/ _` | __/ _ \\/ _` | | _| | |/ _ \\ //\n" -"// | (_| | __/ | | | __/ | | (_| | || __/ (_| | | | | | | __/ //\n" -"// \\__, |\\___|_| |_|\\___|_| \\__,_|\\__\\___|\\__,_| |_| |_|_|\\___| //\n" -"// __/ | //\n" -"// |___/ //\n" -"// //\n" -"// Generated by: embed_genesis.cpp //\n" -"// //\n" -"// Warning: This is a generated file, any changes made here will be //\n" -"// overwritten by the build process. If you need to change what //\n" -"// is generated here, you should use the CMake variable //\n" -"// EOS_EGENESIS_JSON to specify an embedded genesis state. //\n" -"// //\n" -; - -// hack: import create_example_genesis() even though it's a way, way -// specific internal detail -namespace eosio { namespace app { namespace detail { -genesis_state_type create_example_genesis(); -} } } // eosio::app::detail - -fc::path get_path( - const boost::program_options::variables_map& options, - const std::string& name ) -{ - fc::path result = options[name].as(); - if( result.is_relative() ) - result = fc::current_path() / result; - return result; -} - -void convert_to_c_array( - const std::string& src, - std::string& dest, - int width = 40 ) -{ - dest.reserve( src.length() * 6 / 5 ); - bool needs_comma = false; - int row = 0; - for( std::string::size_type i=0; i': case '@': - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': - case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': - case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': - case '[': case ']': case '^': case '_': case '`': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': - case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': - case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': - case '{': case '|': case '}': case '~': - dest.append(&c, 1); - break; - - // use shortest octal escape for everything else - default: - dest.append("\\"); - char dg[3]; - dg[0] = '0' + ((c >> 6) & 3); - dg[1] = '0' + ((c >> 3) & 7); - dg[2] = '0' + ((c ) & 7); - int start = (dg[0] == '0' ? (dg[1] == '0' ? 2 : 1) : 0); - dest.append( dg+start, 3-start ); - } - } - dest.append("\""); - needs_comma = true; - row++; - } - std::cerr << "\n"; - return; -} - -struct egenesis_info -{ - fc::optional< genesis_state_type > genesis; - fc::optional< chain_id_type > chain_id; - fc::optional< std::string > genesis_json; - fc::optional< fc::sha256 > genesis_json_hash; - fc::optional< std::string > genesis_json_array; - int genesis_json_array_width, - genesis_json_array_height; - - void fillin() - { - // must specify either genesis_json or genesis - if( genesis.valid() ) - { - if( !genesis_json.valid() ) - // If genesis_json not exist, generate from genesis - genesis_json = fc::json::to_string( *genesis ); - } - else if( genesis_json.valid() ) - { - // If genesis not exist, generate from genesis_json - genesis = fc::json::from_string( *genesis_json ).as< genesis_state_type >(); - } - else - { - // Neither genesis nor genesis_json exists, crippled - std::cerr << "embed_genesis: Need genesis or genesis_json\n"; - exit(1); - } - // init genesis_json_hash from genesis_json - if( !genesis_json_hash.valid() ) - genesis_json_hash = fc::sha256::hash( *genesis_json ); - // init chain_id from genesis_json_hash - if( !chain_id.valid() ) - chain_id = genesis_json_hash; - // init genesis_json_array from genesis_json - if( !genesis_json_array.valid() ) - { - genesis_json_array = std::string(); - // TODO: gzip - int width = 40; - convert_to_c_array( *genesis_json, *genesis_json_array, width ); - int height = (genesis_json->length() + width-1) / width; - genesis_json_array_width = width; - genesis_json_array_height = height; - } - } -}; - -void load_genesis( - const boost::program_options::variables_map& options, - egenesis_info& info - ) -{ - if( options.count("genesis-json") ) - { - fc::path genesis_json_filename = get_path( options, "genesis-json" ); - std::cerr << "embed_genesis: Reading genesis from file " << genesis_json_filename.preferred_string() << "\n"; - info.genesis_json = std::string(); - read_file_contents( genesis_json_filename, *info.genesis_json ); - } - - if( options.count("chain-id") ) - { - std::string chain_id_str = options["chain-id"].as(); - std::cerr << "embed_genesis: Genesis ID from argument is " << chain_id_str << "\n"; - info.chain_id = chain_id_str; - } - return; -} - -int main( int argc, char** argv ) -{ try { - int main_return = 0; - boost::program_options::options_description cli_options("EOS Chain Identifier"); - cli_options.add_options() - ("help,h", "Print this help message and exit.") - ("genesis-json,g", boost::program_options::value(), "File to read genesis state from") - ("tmplsub,t", boost::program_options::value >()->composing(), - "Given argument of form src.cpp.tmpl---dest.cpp, write dest.cpp expanding template invocations in src") - ; - - boost::program_options::variables_map options; - try - { - boost::program_options::store( boost::program_options::parse_command_line(argc, argv, cli_options), options ); - } - catch (const boost::program_options::error& e) - { - std::cerr << "embed_genesis: error parsing command line: " << e.what() << "\n"; - return 1; - } - - if( options.count("help") ) - { - std::cout << cli_options << "\n"; - return 0; - } - - egenesis_info info; - - load_genesis( options, info ); - info.fillin(); - - fc::mutable_variant_object template_context = fc::mutable_variant_object() - ( "generated_file_banner", generated_file_banner ) - ( "chain_id", (*info.chain_id).str() ) - ; - if( info.genesis_json.valid() ) - { - template_context["genesis_json_length"] = info.genesis_json->length(); - template_context["genesis_json_array"] = (*info.genesis_json_array); - template_context["genesis_json_hash"] = (*info.genesis_json_hash).str(); - template_context["genesis_json_array_width"] = info.genesis_json_array_width; - template_context["genesis_json_array_height"] = info.genesis_json_array_height; - } - - for( const std::string& src_dest : options["tmplsub"].as< std::vector< std::string > >() ) - { - std::cerr << "embed_genesis: parsing tmplsub parameter \"" << src_dest << "\"\n"; - size_t pos = src_dest.find( "---" ); - if( pos == std::string::npos ) - { - std::cerr << "embed_genesis: could not parse tmplsub parameter: '---' not found\n"; - main_return = 1; - continue; - } - std::string src = src_dest.substr( 0, pos ); - std::string dest = src_dest.substr( pos+3 ); - - std::string tmpl; - read_file_contents( fc::path( src ), tmpl ); - std::string out_str = fc::format_string( tmpl, template_context ); - fc::path dest_filename = fc::path( dest ); - std::ofstream outfile( dest_filename.generic_string().c_str() ); - outfile.write( out_str.c_str(), out_str.size() ); - outfile.close(); - } - - return main_return; -} FC_LOG_AND_RETHROW() } diff --git a/libraries/egenesis/include/eosio/egenesis/egenesis.hpp b/libraries/egenesis/include/eosio/egenesis/egenesis.hpp deleted file mode 100644 index fddb17d7de31e111c484dfac5e347e118b1f7f20..0000000000000000000000000000000000000000 --- a/libraries/egenesis/include/eosio/egenesis/egenesis.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ - -#pragma once - -#include - -#include -#include -#include - -namespace eosio { namespace egenesis { - -/** - * Get the chain ID of the built-in egenesis, or chain_id_type() - * if none was compiled in. - */ -eosio::chain::chain_id_type get_egenesis_chain_id(); - -/** - * Get the egenesis JSON, or the empty string if none was compiled in. - */ -void compute_egenesis_json( std::string& result ); - -/** - * The file returned by compute_egenesis_json() should have this hash. - */ -fc::sha256 get_egenesis_json_hash(); - -} } // eosio::egenesis diff --git a/libraries/testing/include/eosio/testing/tester.hpp b/libraries/testing/include/eosio/testing/tester.hpp index 9fe2a0403827a94a076b0500fc1d8979b2c8c87b..84cfc3814adc26965903d26907b90d7a2264907a 100644 --- a/libraries/testing/include/eosio/testing/tester.hpp +++ b/libraries/testing/include/eosio/testing/tester.hpp @@ -77,6 +77,7 @@ namespace eosio { namespace testing { private_key_type get_private_key( name keyname, string role = "owner" ) const; void set_code( account_name name, const char* wast ); + void set_code( account_name name, const vector wasm ); void set_abi( account_name name, const char* abi_json ); diff --git a/libraries/testing/tester.cpp b/libraries/testing/tester.cpp index f4bd5413910d162d5b6dc15093b652fb57d6cd62..7e7af5c9372b80ca5fa8b7c4e1dd48ddf4bd9671 100644 --- a/libraries/testing/tester.cpp +++ b/libraries/testing/tester.cpp @@ -27,6 +27,14 @@ namespace eosio { namespace testing { cfg.genesis.initial_timestamp = fc::time_point::from_iso_string("2020-01-01T00:00:00.000"); cfg.genesis.initial_key = get_public_key( config::system_account_name, "active" ); cfg.limits = limits; + + for(int i = 0; i < boost::unit_test::framework::master_test_suite().argc; ++i) { + if(boost::unit_test::framework::master_test_suite().argv[i] == std::string("--binaryen")) + cfg.wasm_runtime = chain::wasm_interface::vm_type::binaryen; + else if(boost::unit_test::framework::master_test_suite().argv[i] == std::string("--wavm")) + cfg.wasm_runtime = chain::wasm_interface::vm_type::wavm; + } + open(); } @@ -348,8 +356,10 @@ namespace eosio { namespace testing { } void base_tester::set_code( account_name account, const char* wast ) try { - auto wasm = wast_to_wasm(wast); + set_code(account, wast_to_wasm(wast)); + } FC_CAPTURE_AND_RETHROW( (account)(wast) ) + void base_tester::set_code( account_name account, const vector wasm ) try { signed_transaction trx; trx.actions.emplace_back( vector{{account,config::active_name}}, contracts::setcode{ @@ -362,7 +372,7 @@ namespace eosio { namespace testing { set_tapos( trx ); trx.sign( get_private_key( account, "active" ), chain_id_type() ); push_transaction( trx ); - } FC_CAPTURE_AND_RETHROW( (account)(wast) ) + } FC_CAPTURE_AND_RETHROW( (account) ) void base_tester::set_abi( account_name account, const char* abi_json) { auto abi = fc::json::from_string(abi_json).template as(); diff --git a/libraries/wasm-jit/Include/IR/Operators.h b/libraries/wasm-jit/Include/IR/Operators.h index 44391d96cfd1b3fbc36e9dd401ae344d6d8a015f..67cb6397d009a3986191de444cdd3396e802a5fd 100644 --- a/libraries/wasm-jit/Include/IR/Operators.h +++ b/libraries/wasm-jit/Include/IR/Operators.h @@ -24,19 +24,17 @@ namespace IR struct BranchTableImm { - static_assert(sizeof(Uptr) == 8, "SIZEE"); Uptr defaultTargetDepth; Uptr branchTableIndex; // An index into the FunctionDef's branchTables array. }; - template struct LiteralImm { Value value; }; - template + template struct GetOrSetVariableImm { U32 variableIndex; @@ -47,7 +45,6 @@ namespace IR U32 functionIndex; }; - struct CallIndirectImm { IndexedFunctionType type; @@ -60,7 +57,6 @@ namespace IR U32 offset; }; - #if ENABLE_SIMD_PROTOTYPE template struct LaneIndexImm @@ -127,21 +123,16 @@ namespace IR ATOMICRMW : (i32,T) -> T */ - #define ENUM_MEMORY_OPERATORS(visitOp) \ - visitOp(0x3f,current_memory,"current_memory",MemoryImm,NULLARY(i32)) \ - visitOp(0x40,grow_memory,"grow_memory",MemoryImm,UNARY(i32,i32)) - - #define ENUM_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) \ - ENUM_NONFLOAT_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) \ - ENUM_FLOAT_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) - - #define ENUM_NONFLOAT_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) \ + #define ENUM_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) \ visitOp(0x01,nop,"nop",NoImm,NULLARY(none)) \ \ - ENUM_MEMORY_OPERATORS(visitOp) \ + visitOp(0x3f,current_memory,"current_memory",MemoryImm,NULLARY(i32)) \ + visitOp(0x40,grow_memory,"grow_memory",MemoryImm,UNARY(i32,i32)) \ \ visitOp(0x28,i32_load,"i32.load",LoadOrStoreImm<2>,LOAD(i32)) \ visitOp(0x29,i64_load,"i64.load",LoadOrStoreImm<3>,LOAD(i64)) \ + visitOp(0x2a,f32_load,"f32.load",LoadOrStoreImm<2>,LOAD(f32)) \ + visitOp(0x2b,f64_load,"f64.load",LoadOrStoreImm<3>,LOAD(f64)) \ visitOp(0x2c,i32_load8_s,"i32.load8_s",LoadOrStoreImm<0>,LOAD(i32)) \ visitOp(0x2d,i32_load8_u,"i32.load8_u",LoadOrStoreImm<0>,LOAD(i32)) \ visitOp(0x2e,i32_load16_s,"i32.load16_s",LoadOrStoreImm<1>,LOAD(i32)) \ @@ -155,6 +146,8 @@ namespace IR \ visitOp(0x36,i32_store,"i32.store",LoadOrStoreImm<2>,STORE(i32)) \ visitOp(0x37,i64_store,"i64.store",LoadOrStoreImm<3>,STORE(i64)) \ + visitOp(0x38,f32_store,"f32.store",LoadOrStoreImm<2>,STORE(f32)) \ + visitOp(0x39,f64_store,"f64.store",LoadOrStoreImm<3>,STORE(f64)) \ visitOp(0x3a,i32_store8,"i32.store8",LoadOrStoreImm<0>,STORE(i32)) \ visitOp(0x3b,i32_store16,"i32.store16",LoadOrStoreImm<1>,STORE(i32)) \ visitOp(0x3c,i64_store8,"i64.store8",LoadOrStoreImm<0>,STORE(i64)) \ @@ -163,6 +156,8 @@ namespace IR \ visitOp(0x41,i32_const,"i32.const",LiteralImm,NULLARY(i32)) \ visitOp(0x42,i64_const,"i64.const",LiteralImm,NULLARY(i64)) \ + visitOp(0x43,f32_const,"f32.const",LiteralImm,NULLARY(f32)) \ + visitOp(0x44,f64_const,"f64.const",LiteralImm,NULLARY(f64)) \ \ visitOp(0x45,i32_eqz,"i32.eqz",NoImm,UNARY(i32,i32)) \ visitOp(0x46,i32_eq,"i32.eq",NoImm,BINARY(i32,i32)) \ @@ -188,6 +183,20 @@ namespace IR visitOp(0x59,i64_ge_s,"i64.ge_s",NoImm,BINARY(i64,i32)) \ visitOp(0x5a,i64_ge_u,"i64.ge_u",NoImm,BINARY(i64,i32)) \ \ + visitOp(0x5b,f32_eq,"f32.eq",NoImm,BINARY(f32,i32)) \ + visitOp(0x5c,f32_ne,"f32.ne",NoImm,BINARY(f32,i32)) \ + visitOp(0x5d,f32_lt,"f32.lt",NoImm,BINARY(f32,i32)) \ + visitOp(0x5e,f32_gt,"f32.gt",NoImm,BINARY(f32,i32)) \ + visitOp(0x5f,f32_le,"f32.le",NoImm,BINARY(f32,i32)) \ + visitOp(0x60,f32_ge,"f32.ge",NoImm,BINARY(f32,i32)) \ + \ + visitOp(0x61,f64_eq,"f64.eq",NoImm,BINARY(f64,i32)) \ + visitOp(0x62,f64_ne,"f64.ne",NoImm,BINARY(f64,i32)) \ + visitOp(0x63,f64_lt,"f64.lt",NoImm,BINARY(f64,i32)) \ + visitOp(0x64,f64_gt,"f64.gt",NoImm,BINARY(f64,i32)) \ + visitOp(0x65,f64_le,"f64.le",NoImm,BINARY(f64,i32)) \ + visitOp(0x66,f64_ge,"f64.ge",NoImm,BINARY(f64,i32)) \ + \ visitOp(0x67,i32_clz,"i32.clz",NoImm,UNARY(i32,i32)) \ visitOp(0x68,i32_ctz,"i32.ctz",NoImm,UNARY(i32,i32)) \ visitOp(0x69,i32_popcnt,"i32.popcnt",NoImm,UNARY(i32,i32)) \ @@ -228,99 +237,71 @@ namespace IR visitOp(0x89,i64_rotl,"i64.rotl",NoImm,BINARY(i64,i64)) \ visitOp(0x8a,i64_rotr,"i64.rotr",NoImm,BINARY(i64,i64)) \ \ + visitOp(0x8b,f32_abs,"f32.abs",NoImm,UNARY(f32,f32)) \ + visitOp(0x8c,f32_neg,"f32.neg",NoImm,UNARY(f32,f32)) \ + visitOp(0x8d,f32_ceil,"f32.ceil",NoImm,UNARY(f32,f32)) \ + visitOp(0x8e,f32_floor,"f32.floor",NoImm,UNARY(f32,f32)) \ + visitOp(0x8f,f32_trunc,"f32.trunc",NoImm,UNARY(f32,f32)) \ + visitOp(0x90,f32_nearest,"f32.nearest",NoImm,UNARY(f32,f32)) \ + visitOp(0x91,f32_sqrt,"f32.sqrt",NoImm,UNARY(f32,f32)) \ + \ + visitOp(0x92,f32_add,"f32.add",NoImm,BINARY(f32,f32)) \ + visitOp(0x93,f32_sub,"f32.sub",NoImm,BINARY(f32,f32)) \ + visitOp(0x94,f32_mul,"f32.mul",NoImm,BINARY(f32,f32)) \ + visitOp(0x95,f32_div,"f32.div",NoImm,BINARY(f32,f32)) \ + visitOp(0x96,f32_min,"f32.min",NoImm,BINARY(f32,f32)) \ + visitOp(0x97,f32_max,"f32.max",NoImm,BINARY(f32,f32)) \ + visitOp(0x98,f32_copysign,"f32.copysign",NoImm,BINARY(f32,f32)) \ + \ + visitOp(0x99,f64_abs,"f64.abs",NoImm,UNARY(f64,f64)) \ + visitOp(0x9a,f64_neg,"f64.neg",NoImm,UNARY(f64,f64)) \ + visitOp(0x9b,f64_ceil,"f64.ceil",NoImm,UNARY(f64,f64)) \ + visitOp(0x9c,f64_floor,"f64.floor",NoImm,UNARY(f64,f64)) \ + visitOp(0x9d,f64_trunc,"f64.trunc",NoImm,UNARY(f64,f64)) \ + visitOp(0x9e,f64_nearest,"f64.nearest",NoImm,UNARY(f64,f64)) \ + visitOp(0x9f,f64_sqrt,"f64.sqrt",NoImm,UNARY(f64,f64)) \ + \ + visitOp(0xa0,f64_add,"f64.add",NoImm,BINARY(f64,f64)) \ + visitOp(0xa1,f64_sub,"f64.sub",NoImm,BINARY(f64,f64)) \ + visitOp(0xa2,f64_mul,"f64.mul",NoImm,BINARY(f64,f64)) \ + visitOp(0xa3,f64_div,"f64.div",NoImm,BINARY(f64,f64)) \ + visitOp(0xa4,f64_min,"f64.min",NoImm,BINARY(f64,f64)) \ + visitOp(0xa5,f64_max,"f64.max",NoImm,BINARY(f64,f64)) \ + visitOp(0xa6,f64_copysign,"f64.copysign",NoImm,BINARY(f64,f64)) \ + \ visitOp(0xa7,i32_wrap_i64,"i32.wrap/i64",NoImm,UNARY(i64,i32)) \ + visitOp(0xa8,i32_trunc_s_f32,"i32.trunc_s/f32",NoImm,UNARY(f32,i32)) \ + visitOp(0xa9,i32_trunc_u_f32,"i32.trunc_u/f32",NoImm,UNARY(f32,i32)) \ + visitOp(0xaa,i32_trunc_s_f64,"i32.trunc_s/f64",NoImm,UNARY(f64,i32)) \ + visitOp(0xab,i32_trunc_u_f64,"i32.trunc_u/f64",NoImm,UNARY(f64,i32)) \ visitOp(0xac,i64_extend_s_i32,"i64.extend_s/i32",NoImm,UNARY(i32,i64)) \ visitOp(0xad,i64_extend_u_i32,"i64.extend_u/i32",NoImm,UNARY(i32,i64)) \ - ENUM_NONFLOAT_SIMD_OPERATORS(visitOp) \ - ENUM_NONFLOAT_THREADING_OPERATORS(visitOp) - - #define ENUM_FLOAT_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) \ - visitOp(0x2a,f32_load,"f32.load",LoadOrStoreImm<2>,LOAD(f32)) \ - visitOp(0x2b,f64_load,"f64.load",LoadOrStoreImm<3>,LOAD(f64)) \ - \ - visitOp(0x38,f32_store,"f32.store",LoadOrStoreImm<2>,STORE(f32)) \ - visitOp(0x39,f64_store,"f64.store",LoadOrStoreImm<3>,STORE(f64)) \ - \ - visitOp(0x43,f32_const,"f32.const",LiteralImm,NULLARY(f32)) \ - visitOp(0x44,f64_const,"f64.const",LiteralImm,NULLARY(f64)) \ - \ - visitOp(0x5b,f32_eq,"f32.eq",NoImm,BINARY(f32,i32)) \ - visitOp(0x5c,f32_ne,"f32.ne",NoImm,BINARY(f32,i32)) \ - visitOp(0x5d,f32_lt,"f32.lt",NoImm,BINARY(f32,i32)) \ - visitOp(0x5e,f32_gt,"f32.gt",NoImm,BINARY(f32,i32)) \ - visitOp(0x5f,f32_le,"f32.le",NoImm,BINARY(f32,i32)) \ - visitOp(0x60,f32_ge,"f32.ge",NoImm,BINARY(f32,i32)) \ - \ - visitOp(0x61,f64_eq,"f64.eq",NoImm,BINARY(f64,i32)) \ - visitOp(0x62,f64_ne,"f64.ne",NoImm,BINARY(f64,i32)) \ - visitOp(0x63,f64_lt,"f64.lt",NoImm,BINARY(f64,i32)) \ - visitOp(0x64,f64_gt,"f64.gt",NoImm,BINARY(f64,i32)) \ - visitOp(0x65,f64_le,"f64.le",NoImm,BINARY(f64,i32)) \ - visitOp(0x66,f64_ge,"f64.ge",NoImm,BINARY(f64,i32)) \ - \ - visitOp(0x8b,f32_abs,"f32.abs",NoImm,UNARY(f32,f32)) \ - visitOp(0x8c,f32_neg,"f32.neg",NoImm,UNARY(f32,f32)) \ - visitOp(0x8d,f32_ceil,"f32.ceil",NoImm,UNARY(f32,f32)) \ - visitOp(0x8e,f32_floor,"f32.floor",NoImm,UNARY(f32,f32)) \ - visitOp(0x8f,f32_trunc,"f32.trunc",NoImm,UNARY(f32,f32)) \ - visitOp(0x90,f32_nearest,"f32.nearest",NoImm,UNARY(f32,f32)) \ - visitOp(0x91,f32_sqrt,"f32.sqrt",NoImm,UNARY(f32,f32)) \ - \ - visitOp(0x92,f32_add,"f32.add",NoImm,BINARY(f32,f32)) \ - visitOp(0x93,f32_sub,"f32.sub",NoImm,BINARY(f32,f32)) \ - visitOp(0x94,f32_mul,"f32.mul",NoImm,BINARY(f32,f32)) \ - visitOp(0x95,f32_div,"f32.div",NoImm,BINARY(f32,f32)) \ - visitOp(0x96,f32_min,"f32.min",NoImm,BINARY(f32,f32)) \ - visitOp(0x97,f32_max,"f32.max",NoImm,BINARY(f32,f32)) \ - visitOp(0x98,f32_copysign,"f32.copysign",NoImm,BINARY(f32,f32)) \ - \ - visitOp(0x99,f64_abs,"f64.abs",NoImm,UNARY(f64,f64)) \ - visitOp(0x9a,f64_neg,"f64.neg",NoImm,UNARY(f64,f64)) \ - visitOp(0x9b,f64_ceil,"f64.ceil",NoImm,UNARY(f64,f64)) \ - visitOp(0x9c,f64_floor,"f64.floor",NoImm,UNARY(f64,f64)) \ - visitOp(0x9d,f64_trunc,"f64.trunc",NoImm,UNARY(f64,f64)) \ - visitOp(0x9e,f64_nearest,"f64.nearest",NoImm,UNARY(f64,f64)) \ - visitOp(0x9f,f64_sqrt,"f64.sqrt",NoImm,UNARY(f64,f64)) \ - \ - visitOp(0xa0,f64_add,"f64.add",NoImm,BINARY(f64,f64)) \ - visitOp(0xa1,f64_sub,"f64.sub",NoImm,BINARY(f64,f64)) \ - visitOp(0xa2,f64_mul,"f64.mul",NoImm,BINARY(f64,f64)) \ - visitOp(0xa3,f64_div,"f64.div",NoImm,BINARY(f64,f64)) \ - visitOp(0xa4,f64_min,"f64.min",NoImm,BINARY(f64,f64)) \ - visitOp(0xa5,f64_max,"f64.max",NoImm,BINARY(f64,f64)) \ - visitOp(0xa6,f64_copysign,"f64.copysign",NoImm,BINARY(f64,f64)) \ - \ - visitOp(0xa8,i32_trunc_s_f32,"i32.trunc_s/f32",NoImm,UNARY(f32,i32)) \ - visitOp(0xa9,i32_trunc_u_f32,"i32.trunc_u/f32",NoImm,UNARY(f32,i32)) \ - visitOp(0xaa,i32_trunc_s_f64,"i32.trunc_s/f64",NoImm,UNARY(f64,i32)) \ - visitOp(0xab,i32_trunc_u_f64,"i32.trunc_u/f64",NoImm,UNARY(f64,i32)) \ - visitOp(0xae,i64_trunc_s_f32,"i64.trunc_s/f32",NoImm,UNARY(f32,i64)) \ - visitOp(0xaf,i64_trunc_u_f32,"i64.trunc_u/f32",NoImm,UNARY(f32,i64)) \ - visitOp(0xb0,i64_trunc_s_f64,"i64.trunc_s/f64",NoImm,UNARY(f64,i64)) \ - visitOp(0xb1,i64_trunc_u_f64,"i64.trunc_u/f64",NoImm,UNARY(f64,i64)) \ - visitOp(0xb2,f32_convert_s_i32,"f32.convert_s/i32",NoImm,UNARY(i32,f32)) \ - visitOp(0xb3,f32_convert_u_i32,"f32.convert_u/i32",NoImm,UNARY(i32,f32)) \ - visitOp(0xb4,f32_convert_s_i64,"f32.convert_s/i64",NoImm,UNARY(i64,f32)) \ - visitOp(0xb5,f32_convert_u_i64,"f32.convert_u/i64",NoImm,UNARY(i64,f32)) \ - visitOp(0xb6,f32_demote_f64,"f32.demote/f64",NoImm,UNARY(f64,f32)) \ - visitOp(0xb7,f64_convert_s_i32,"f64.convert_s/i32",NoImm,UNARY(i32,f64)) \ - visitOp(0xb8,f64_convert_u_i32,"f64.convert_u/i32",NoImm,UNARY(i32,f64)) \ - visitOp(0xb9,f64_convert_s_i64,"f64.convert_s/i64",NoImm,UNARY(i64,f64)) \ - visitOp(0xba,f64_convert_u_i64,"f64.convert_u/i64",NoImm,UNARY(i64,f64)) \ - visitOp(0xbb,f64_promote_f32,"f64.promote/f32",NoImm,UNARY(f32,f64)) \ - visitOp(0xbc,i32_reinterpret_f32,"i32.reinterpret/f32",NoImm,UNARY(f32,i32)) \ - visitOp(0xbd,i64_reinterpret_f64,"i64.reinterpret/f64",NoImm,UNARY(f64,i64)) \ - visitOp(0xbe,f32_reinterpret_i32,"f32.reinterpret/i32",NoImm,UNARY(i32,f32)) \ - visitOp(0xbf,f64_reinterpret_i64,"f64.reinterpret/i64",NoImm,UNARY(i64,f64)) \ - ENUM_FLOAT_SIMD_OPERATORS(visitOp) \ - ENUM_FLOAT_THREADING_OPERATORS(visitOp) + visitOp(0xae,i64_trunc_s_f32,"i64.trunc_s/f32",NoImm,UNARY(f32,i64)) \ + visitOp(0xaf,i64_trunc_u_f32,"i64.trunc_u/f32",NoImm,UNARY(f32,i64)) \ + visitOp(0xb0,i64_trunc_s_f64,"i64.trunc_s/f64",NoImm,UNARY(f64,i64)) \ + visitOp(0xb1,i64_trunc_u_f64,"i64.trunc_u/f64",NoImm,UNARY(f64,i64)) \ + visitOp(0xb2,f32_convert_s_i32,"f32.convert_s/i32",NoImm,UNARY(i32,f32)) \ + visitOp(0xb3,f32_convert_u_i32,"f32.convert_u/i32",NoImm,UNARY(i32,f32)) \ + visitOp(0xb4,f32_convert_s_i64,"f32.convert_s/i64",NoImm,UNARY(i64,f32)) \ + visitOp(0xb5,f32_convert_u_i64,"f32.convert_u/i64",NoImm,UNARY(i64,f32)) \ + visitOp(0xb6,f32_demote_f64,"f32.demote/f64",NoImm,UNARY(f64,f32)) \ + visitOp(0xb7,f64_convert_s_i32,"f64.convert_s/i32",NoImm,UNARY(i32,f64)) \ + visitOp(0xb8,f64_convert_u_i32,"f64.convert_u/i32",NoImm,UNARY(i32,f64)) \ + visitOp(0xb9,f64_convert_s_i64,"f64.convert_s/i64",NoImm,UNARY(i64,f64)) \ + visitOp(0xba,f64_convert_u_i64,"f64.convert_u/i64",NoImm,UNARY(i64,f64)) \ + visitOp(0xbb,f64_promote_f32,"f64.promote/f32",NoImm,UNARY(f32,f64)) \ + visitOp(0xbc,i32_reinterpret_f32,"i32.reinterpret/f32",NoImm,UNARY(f32,i32)) \ + visitOp(0xbd,i64_reinterpret_f64,"i64.reinterpret/f64",NoImm,UNARY(f64,i64)) \ + visitOp(0xbe,f32_reinterpret_i32,"f32.reinterpret/i32",NoImm,UNARY(i32,f32)) \ + visitOp(0xbf,f64_reinterpret_i64,"f64.reinterpret/i64",NoImm,UNARY(i64,f64)) \ + ENUM_SIMD_OPERATORS(visitOp) \ + ENUM_THREADING_OPERATORS(visitOp) #if !ENABLE_SIMD_PROTOTYPE - #define ENUM_NONFLOAT_SIMD_OPERATORS(visitOp) - #define ENUM_FLOAT_SIMD_OPERATORS(visitOp) + #define ENUM_SIMD_OPERATORS(visitOp) #else #define SIMDOP(simdOpIndex) (0xfd00|simdOpIndex) - #define ENUM_NONFLOAT_SIMD_OPERATORS(visitOp) \ + #define ENUM_SIMD_OPERATORS(visitOp) \ visitOp(SIMDOP(0),v128_const,"v128.const",LiteralImm,NULLARY(v128)) \ visitOp(SIMDOP(1),v128_load,"v128.load",LoadOrStoreImm<4>,LOAD(v128)) \ visitOp(SIMDOP(2),v128_store,"v128.store",LoadOrStoreImm<4>,STORE(v128)) \ @@ -329,6 +310,8 @@ namespace IR visitOp(SIMDOP(4),i16x8_splat,"i16x8.splat",NoImm,UNARY(i32,v128)) \ visitOp(SIMDOP(5),i32x4_splat,"i32x4.splat",NoImm,UNARY(i32,v128)) \ visitOp(SIMDOP(6),i64x2_splat,"i64x2.splat",NoImm,UNARY(i64,v128)) \ + visitOp(SIMDOP(7),f32x4_splat,"f32x4.splat",NoImm,UNARY(f32,v128)) \ + visitOp(SIMDOP(8),f64x2_splat,"f64x2.splat",NoImm,UNARY(f64,v128)) \ \ visitOp(SIMDOP(9),i8x16_extract_lane_s,"i8x16.extract_lane_s",LaneIndexImm<16>,UNARY(v128,i32)) \ visitOp(SIMDOP(10),i8x16_extract_lane_u,"i8x16.extract_lane_u",LaneIndexImm<16>,UNARY(v128,i32)) \ @@ -336,11 +319,15 @@ namespace IR visitOp(SIMDOP(12),i16x8_extract_lane_u,"i16x8.extract_lane_u",LaneIndexImm<8>,UNARY(v128,i32)) \ visitOp(SIMDOP(13),i32x4_extract_lane,"i32x4.extract_lane",LaneIndexImm<4>,UNARY(v128,i32)) \ visitOp(SIMDOP(14),i64x2_extract_lane,"i64x2.extract_lane",LaneIndexImm<2>,UNARY(v128,i64)) \ + visitOp(SIMDOP(15),f32x4_extract_lane,"f32x4.extract_lane",LaneIndexImm<4>,UNARY(v128,f32)) \ + visitOp(SIMDOP(16),f64x2_extract_lane,"f64x2.extract_lane",LaneIndexImm<2>,UNARY(v128,f64)) \ \ visitOp(SIMDOP(17),i8x16_replace_lane,"i8x16.replace_lane",LaneIndexImm<16>,REPLACELANE(i32,v128)) \ visitOp(SIMDOP(18),i16x8_replace_lane,"i16x8.replace_lane",LaneIndexImm<8>,REPLACELANE(i32,v128)) \ visitOp(SIMDOP(19),i32x4_replace_lane,"i32x4.replace_lane",LaneIndexImm<4>,REPLACELANE(i32,v128)) \ visitOp(SIMDOP(20),i64x2_replace_lane,"i64x2.replace_lane",LaneIndexImm<2>,REPLACELANE(i64,v128)) \ + visitOp(SIMDOP(21),f32x4_replace_lane,"f32x4.replace_lane",LaneIndexImm<4>,REPLACELANE(f32,v128)) \ + visitOp(SIMDOP(22),f64x2_replace_lane,"f64x2.replace_lane",LaneIndexImm<2>,REPLACELANE(f64,v128)) \ \ visitOp(SIMDOP(23),v8x16_shuffle,"v8x16.shuffle",ShuffleImm<16>,BINARY(v128,v128)) \ \ @@ -406,10 +393,14 @@ namespace IR visitOp(SIMDOP(72),i8x16_eq,"i8x16.eq",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(73),i16x8_eq,"i16x8.eq",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(74),i32x4_eq,"i32x4.eq",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(75),f32x4_eq,"f32x4.eq",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(76),f64x2_eq,"f64x2.eq",NoImm,BINARY(v128,v128)) \ \ visitOp(SIMDOP(77),i8x16_ne,"i8x16.ne",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(78),i16x8_ne,"i16x8.ne",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(79),i32x4_ne,"i32x4.ne",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(80),f32x4_ne,"f32x4.ne",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(81),f64x2_ne,"f64x2.ne",NoImm,BINARY(v128,v128)) \ \ visitOp(SIMDOP(82),i8x16_lt_s,"i8x16.lt_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(83),i8x16_lt_u,"i8x16.lt_u",NoImm,BINARY(v128,v128)) \ @@ -417,6 +408,8 @@ namespace IR visitOp(SIMDOP(85),i16x8_lt_u,"i16x8.lt_u",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(86),i32x4_lt_s,"i32x4.lt_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(87),i32x4_lt_u,"i32x4.lt_u",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(88),f32x4_lt,"f32x4.lt",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(89),f64x2_lt,"f64x2.lt",NoImm,BINARY(v128,v128)) \ \ visitOp(SIMDOP(90),i8x16_le_s,"i8x16.le_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(91),i8x16_le_u,"i8x16.le_u",NoImm,BINARY(v128,v128)) \ @@ -424,6 +417,8 @@ namespace IR visitOp(SIMDOP(93),i16x8_le_u,"i16x8.le_u",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(94),i32x4_le_s,"i32x4.le_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(95),i32x4_le_u,"i32x4.le_u",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(96),f32x4_le,"f32x4.le",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(97),f64x2_le,"f64x2.le",NoImm,BINARY(v128,v128)) \ \ visitOp(SIMDOP(98),i8x16_gt_s,"i8x16.gt_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(99),i8x16_gt_u,"i8x16.gt_u",NoImm,BINARY(v128,v128)) \ @@ -431,84 +426,60 @@ namespace IR visitOp(SIMDOP(101),i16x8_gt_u,"i16x8.gt_u",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(102),i32x4_gt_s,"i32x4.gt_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(103),i32x4_gt_u,"i32x4.gt_u",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(104),f32x4_gt,"f32x4.gt",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(105),f64x2_gt,"f64x2.gt",NoImm,BINARY(v128,v128)) \ \ visitOp(SIMDOP(106),i8x16_ge_s,"i8x16.ge_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(107),i8x16_ge_u,"i8x16.ge_u",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(108),i16x8_ge_s,"i16x8.ge_s",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(109),i16x8_ge_u,"i16x8.ge_u",NoImm,BINARY(v128,v128)) \ visitOp(SIMDOP(110),i32x4_ge_s,"i32x4.ge_s",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(111),i32x4_ge_u,"i32x4.ge_u",NoImm,BINARY(v128,v128)) - #define ENUM_FLOAT_SIMD_OPERATORS(visitOp) \ - visitOp(SIMDOP(7),f32x4_splat,"f32x4.splat",NoImm,UNARY(f32,v128)) \ - visitOp(SIMDOP(8),f64x2_splat,"f64x2.splat",NoImm,UNARY(f64,v128)) \ - \ - visitOp(SIMDOP(15),f32x4_extract_lane,"f32x4.extract_lane",LaneIndexImm<4>,UNARY(v128,f32)) \ - visitOp(SIMDOP(16),f64x2_extract_lane,"f64x2.extract_lane",LaneIndexImm<2>,UNARY(v128,f64)) \ - \ - visitOp(SIMDOP(21),f32x4_replace_lane,"f32x4.replace_lane",LaneIndexImm<4>,REPLACELANE(f32,v128)) \ - visitOp(SIMDOP(22),f64x2_replace_lane,"f64x2.replace_lane",LaneIndexImm<2>,REPLACELANE(f64,v128)) \ - \ - visitOp(SIMDOP(75),f32x4_eq,"f32x4.eq",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(76),f64x2_eq,"f64x2.eq",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(80),f32x4_ne,"f32x4.ne",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(81),f64x2_ne,"f64x2.ne",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(88),f32x4_lt,"f32x4.lt",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(89),f64x2_lt,"f64x2.lt",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(96),f32x4_le,"f32x4.le",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(97),f64x2_le,"f64x2.le",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(104),f32x4_gt,"f32x4.gt",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(105),f64x2_gt,"f64x2.gt",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(112),f32x4_ge,"f32x4.ge",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(113),f64x2_ge,"f64x2.ge",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(114),f32x4_neg,"f32x4.neg",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(115),f64x2_neg,"f64x2.neg",NoImm,UNARY(v128,v128)) \ - \ - visitOp(SIMDOP(116),f32x4_abs,"f32x4.abs",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(117),f64x2_abs,"f64x2.abs",NoImm,UNARY(v128,v128)) \ - \ - visitOp(SIMDOP(118),f32x4_min,"f32x4.min",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(119),f64x2_min,"f64x2.min",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(120),f32x4_max,"f32x4.max",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(121),f64x2_max,"f64x2.max",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(122),f32x4_add,"f32x4.add",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(123),f64x2_add,"f64x2.add",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(124),f32x4_sub,"f32x4.sub",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(125),f64x2_sub,"f64x2.sub",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(126),f32x4_div,"f32x4.div",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(127),f64x2_div,"f64x2.div",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(128),f32x4_mul,"f32x4.mul",NoImm,BINARY(v128,v128)) \ - visitOp(SIMDOP(129),f64x2_mul,"f64x2.mul",NoImm,BINARY(v128,v128)) \ - \ - visitOp(SIMDOP(130),f32x4_sqrt,"f32x4.sqrt",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(131),f64x2_sqrt,"f64x2.sqrt",NoImm,UNARY(v128,v128)) \ - \ - visitOp(SIMDOP(132),f32x4_convert_s_i32x4,"f32x4.convert_s/i32x4",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(133),f32x4_convert_u_i32x4,"f32x4.convert_u/i32x4",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(134),f64x2_convert_s_i64x2,"f64x2.convert_s/i64x2",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(135),f64x2_convert_u_i64x2,"f64x2.convert_u/i64x2",NoImm,UNARY(v128,v128)) \ - \ - visitOp(SIMDOP(136),i32x4_trunc_s_f32x4_sat,"i32x4.trunc_s/f32x4:sat",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(137),i32x4_trunc_u_f32x4_sat,"i32x4.trunc_u/f32x4:sat",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(138),i64x2_trunc_s_f64x2_sat,"i64x2.trunc_s/f64x2:sat",NoImm,UNARY(v128,v128)) \ - visitOp(SIMDOP(139),i64x2_trunc_u_f64x2_sat,"i64x2.trunc_u/f64x2:sat",NoImm,UNARY(v128,v128)) + visitOp(SIMDOP(111),i32x4_ge_u,"i32x4.ge_u",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(112),f32x4_ge,"f32x4.ge",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(113),f64x2_ge,"f64x2.ge",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(114),f32x4_neg,"f32x4.neg",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(115),f64x2_neg,"f64x2.neg",NoImm,UNARY(v128,v128)) \ + \ + visitOp(SIMDOP(116),f32x4_abs,"f32x4.abs",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(117),f64x2_abs,"f64x2.abs",NoImm,UNARY(v128,v128)) \ + \ + visitOp(SIMDOP(118),f32x4_min,"f32x4.min",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(119),f64x2_min,"f64x2.min",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(120),f32x4_max,"f32x4.max",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(121),f64x2_max,"f64x2.max",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(122),f32x4_add,"f32x4.add",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(123),f64x2_add,"f64x2.add",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(124),f32x4_sub,"f32x4.sub",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(125),f64x2_sub,"f64x2.sub",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(126),f32x4_div,"f32x4.div",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(127),f64x2_div,"f64x2.div",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(128),f32x4_mul,"f32x4.mul",NoImm,BINARY(v128,v128)) \ + visitOp(SIMDOP(129),f64x2_mul,"f64x2.mul",NoImm,BINARY(v128,v128)) \ + \ + visitOp(SIMDOP(130),f32x4_sqrt,"f32x4.sqrt",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(131),f64x2_sqrt,"f64x2.sqrt",NoImm,UNARY(v128,v128)) \ + \ + visitOp(SIMDOP(132),f32x4_convert_s_i32x4,"f32x4.convert_s/i32x4",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(133),f32x4_convert_u_i32x4,"f32x4.convert_u/i32x4",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(134),f64x2_convert_s_i64x2,"f64x2.convert_s/i64x2",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(135),f64x2_convert_u_i64x2,"f64x2.convert_u/i64x2",NoImm,UNARY(v128,v128)) \ + \ + visitOp(SIMDOP(136),i32x4_trunc_s_f32x4_sat,"i32x4.trunc_s/f32x4:sat",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(137),i32x4_trunc_u_f32x4_sat,"i32x4.trunc_u/f32x4:sat",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(138),i64x2_trunc_s_f64x2_sat,"i64x2.trunc_s/f64x2:sat",NoImm,UNARY(v128,v128)) \ + visitOp(SIMDOP(139),i64x2_trunc_u_f64x2_sat,"i64x2.trunc_u/f64x2:sat",NoImm,UNARY(v128,v128)) #endif #if !ENABLE_THREADING_PROTOTYPE - #define ENUM_NONFLOAT_THREADING_OPERATORS(visitOp) - #define ENUM_FLOAT_THREADING_OPERATORS(visitOp) + #define ENUM_THREADING_OPERATORS(visitOp) #else - #define ENUM_NONFLOAT_THREADING_OPERATORS(visitOp) \ + #define ENUM_THREADING_OPERATORS(visitOp) \ visitOp(0xc0,i32_extend_s_i8,"i32.extend_s/i8",NoImm,UNARY(i32,i32)) \ visitOp(0xc1,i32_extend_s_i16,"i32.extend_s/i16",NoImm,UNARY(i32,i32)) \ visitOp(0xc2,i64_extend_s_i8,"i64.extend_s/i8",NoImm,UNARY(i64,i64)) \ @@ -544,6 +515,8 @@ namespace IR visitOp(0xfe27,i64_atomic_load32_u,"i64.atomic.load32_u",AtomicLoadOrStoreImm<2>,LOAD(i64)) \ visitOp(0xfe28,i32_atomic_store,"i32.atomic.store",AtomicLoadOrStoreImm<2>,STORE(i32)) \ visitOp(0xfe29,i64_atomic_store,"i64.atomic.store",AtomicLoadOrStoreImm<3>,STORE(i64)) \ + visitOp(0xfe2a,f32_atomic_store,"f32.atomic.store",AtomicLoadOrStoreImm<2>,STORE(f32)) \ + visitOp(0xfe2b,f64_atomic_store,"f64.atomic.store",AtomicLoadOrStoreImm<3>,STORE(f64)) \ visitOp(0xfe2c,i32_atomic_store8,"i32.atomic.store8",AtomicLoadOrStoreImm<0>,STORE(i32)) \ visitOp(0xfe2d,i32_atomic_store16,"i32.atomic.store16",AtomicLoadOrStoreImm<1>,STORE(i32)) \ visitOp(0xfe2e,i64_atomic_store8,"i64.atomic.store8",AtomicLoadOrStoreImm<0>,STORE(i64)) \ @@ -589,27 +562,16 @@ namespace IR visitOp(0xfe76,i64_atomic_rmw8_u_xor,"i64.atomic.rmw8_u.xor",AtomicLoadOrStoreImm<0>,ATOMICRMW(i64)) \ visitOp(0xfe78,i64_atomic_rmw16_u_xor,"i64.atomic.rmw16_u.xor",AtomicLoadOrStoreImm<1>,ATOMICRMW(i64)) \ visitOp(0xfe7a,i64_atomic_rmw32_u_xor,"i64.atomic.rmw32_u.xor",AtomicLoadOrStoreImm<2>,ATOMICRMW(i64)) - #define ENUM_FLOAT_THREADING_OPERATORS(visitOp) \ - visitOp(0xfe2a,f32_atomic_store,"f32.atomic.store",AtomicLoadOrStoreImm<2>,STORE(f32)) \ - visitOp(0xfe2b,f64_atomic_store,"f64.atomic.store",AtomicLoadOrStoreImm<3>,STORE(f64)) #endif #define ENUM_NONCONTROL_OPERATORS(visitOp) \ ENUM_PARAMETRIC_OPERATORS(visitOp) \ ENUM_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) - #define ENUM_NONFLOAT_NONCONTROL_OPERATORS(visitOp) \ - ENUM_PARAMETRIC_OPERATORS(visitOp) \ - ENUM_NONFLOAT_NONCONTROL_NONPARAMETRIC_OPERATORS(visitOp) - #define ENUM_OPERATORS(visitOp) \ ENUM_NONCONTROL_OPERATORS(visitOp) \ ENUM_CONTROL_OPERATORS(visitOp) - #define ENUM_NONFLOAT_OPERATORS(visitOp) \ - ENUM_NONFLOAT_NONCONTROL_OPERATORS(visitOp) \ - ENUM_CONTROL_OPERATORS(visitOp) - enum class Opcode : U16 { #define VISIT_OPCODE(opcode,name,...) name = opcode, @@ -686,7 +648,7 @@ namespace IR nextByte = savedNextByte; return result; } - + private: const U8* nextByte; @@ -713,4 +675,4 @@ namespace IR }; IR_API const char* getOpcodeName(Opcode opcode); -} +} \ No newline at end of file diff --git a/libraries/wasm-jit/Include/Runtime/Runtime.h b/libraries/wasm-jit/Include/Runtime/Runtime.h index 367e3c175fc863104d82e80cf5e8f7d00dc44473..e1841cd5602798350e424026b3a2b78459cb6c16 100644 --- a/libraries/wasm-jit/Include/Runtime/Runtime.h +++ b/libraries/wasm-jit/Include/Runtime/Runtime.h @@ -122,12 +122,7 @@ namespace Runtime // Invokes a FunctionInstance with the given parameters, and returns the result. // Throws a Runtime::Exception if a trap occurs. - Result invokeFunction(FunctionInstance* function,const std::vector& parameters); - - void invokeFunction2(FunctionInstance* function,const std::vector& parameters); - - void test( int a ); - Result testPointerPass(int64_t function, int64_t test2); + RUNTIME_API Result invokeFunction(FunctionInstance* function,const std::vector& parameters); // Returns the type of a FunctionInstance. RUNTIME_API const IR::FunctionType* getFunctionType(FunctionInstance* function); diff --git a/libraries/wasm-jit/Include/WASM/WASM.h b/libraries/wasm-jit/Include/WASM/WASM.h index e56aaee09bab272c63f66cdc8f9fbb265a355936..458e0155f852635ca43e17a10e7087e13f9dd4ac 100644 --- a/libraries/wasm-jit/Include/WASM/WASM.h +++ b/libraries/wasm-jit/Include/WASM/WASM.h @@ -11,7 +11,6 @@ namespace Serialization { struct InputStream; struct OutputStream; } namespace WASM { - WEBASSEMBLY_API void serialize(Serialization::InputStream& stream,IR::Module& module); - WEBASSEMBLY_API void serializeWithInjection(Serialization::InputStream& stream,IR::Module& module); - WEBASSEMBLY_API void serialize(Serialization::OutputStream& stream,const IR::Module& module); + WEBASSEMBLY_API void serialize(Serialization::InputStream& stream,IR::Module& module); + WEBASSEMBLY_API void serialize(Serialization::OutputStream& stream,const IR::Module& module); } diff --git a/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp b/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp index ed7fb3eb608618fcbf21f7857cbf45d2119b6922..f62fb477adbb8acdb202a95532791c3b245950d8 100644 --- a/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp +++ b/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp @@ -3,7 +3,7 @@ #include "Platform/Platform.h" #include "Runtime.h" #include "RuntimePrivate.h" - +#include #include namespace Intrinsics @@ -44,11 +44,11 @@ namespace Intrinsics Function::~Function() { - { - Platform::Lock Lock(Singleton::get().mutex); - Singleton::get().functionMap.erase(Singleton::get().functionMap.find(getDecoratedName(name,function->type))); - } - delete function; + { + Platform::Lock Lock(Singleton::get().mutex); + Singleton::get().functionMap.erase(Singleton::get().functionMap.find(getDecoratedName(name,function->type))); + } + delete function; } Global::Global(const char* inName,IR::GlobalType inType) diff --git a/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp b/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp index 3c97f8d8a5b69d55fd5bc2e0c01d61f3b77998c3..fc4ca85b50622db6881541cabd8d7823e0d1eb6c 100644 --- a/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp +++ b/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp @@ -43,12 +43,8 @@ namespace LLVMJIT , llvmModule(new llvm::Module("",context)) , diBuilder(*llvmModule) { - diModuleScope = diBuilder.createFile("debug.info","."); -#ifdef _DEBUG - diCompileUnit = diBuilder.createCompileUnit(llvm::dwarf::DW_LANG_C, diModuleScope,"WAVM",0,"",0); -#else + diModuleScope = diBuilder.createFile("unknown","unknown"); diCompileUnit = diBuilder.createCompileUnit(0xffff,diModuleScope,"WAVM",true,"",0); -#endif diValueTypes[(Uptr)ValueType::any] = nullptr; diValueTypes[(Uptr)ValueType::i32] = diBuilder.createBasicType("i32",32,llvm::dwarf::DW_ATE_signed); diff --git a/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp b/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp index b695f5cbaeeccd088e237daed2c446fb0e7478bc..436299f36017e57401695c189abe754206ca42a0 100644 --- a/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp +++ b/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp @@ -4,15 +4,6 @@ #include "Logging/Logging.h" #include "RuntimePrivate.h" -#ifdef _DEBUG -#include -#include -#include -#include -#include -#include -#endif - #ifdef _DEBUG // This needs to be 1 to allow debuggers such as Visual Studio to place breakpoints and step through the JITed code. #define USE_WRITEABLE_JIT_CODE_PAGES 1 @@ -749,31 +740,6 @@ namespace LLVMJIT return reinterpret_cast(jitUnit->symbol->baseAddress); } -#ifdef _DEBUG - int isDebuggerPresent() - { - char buff[1024]; - int debuggerPresent = 0; - int status_fd = open("/proc/self/status", O_RDONLY); - if (status_fd == -1) - return 0; - - ssize_t num_read = read(status_fd, buff, sizeof(buff)); - - if (num_read > 0) { - static const char tracerPID[] = "TracerPID:"; - char *tracer_pid; - buff[num_read] = 0; - tracer_pid = strstr(buff, tracerPID); - - if (tracer_pid) - debuggerPresent = !!atoi(tracer_pid + sizeof(tracerPID) -1 ); - } - - return debuggerPresent; - } -#endif - void init() { llvm::InitializeNativeTarget(); diff --git a/libraries/wasm-jit/Source/WASM/WASMSerialization.cpp b/libraries/wasm-jit/Source/WASM/WASMSerialization.cpp index e401fe13aae38f7c07060ef03d606ac41156e679..a85a00e22550c50608cf6d02ece1a613f177a6bd 100644 --- a/libraries/wasm-jit/Source/WASM/WASMSerialization.cpp +++ b/libraries/wasm-jit/Source/WASM/WASMSerialization.cpp @@ -7,8 +7,6 @@ #include "IR/Types.h" #include "IR/Validate.h" -#include - using namespace Serialization; static void throwIfNotValidUTF8(const std::string& string) @@ -19,7 +17,7 @@ static void throwIfNotValidUTF8(const std::string& string) throw FatalSerializationException("invalid UTF-8 encoding"); } } - + // These serialization functions need to be declared in the IR namespace for the array serializer in the Serialization namespace to find them. namespace IR { @@ -176,128 +174,12 @@ namespace IR } } -using namespace IR; - -class ChecktimeInjection -{ -public: - ChecktimeInjection() - : typeSlot(-1) - {} - - - void addCall(Module& module, OperatorEncoderStream& operatorEncoderStream, CodeValidationStream& codeValidationStream) - { - // make sure the import is added - addImport(module); - LiteralImm param_imm { 11 }; - codeValidationStream.i32_const(param_imm); - operatorEncoderStream.i32_const(param_imm); - CallImm checktime_imm { checktimeIndex(module) }; - codeValidationStream.call(checktime_imm); - operatorEncoderStream.call(checktime_imm); - } - - static U32 checktimeIndex(const Module& module) - { - return module.functions.imports.size() - 1; - } - - void setTypeSlot(const Module& module, ResultType returnType, const std::vector& parameterTypes) - { - if (returnType == ResultType::none && parameterTypes.size() == 1 && parameterTypes[0] == ValueType::i32 ) - typeSlot = module.types.size() - 1; - } - - void addTypeSlot(Module& module) - { - if (typeSlot < 0) - { - // add a type for void func(void) - typeSlot = module.types.size(); - module.types.push_back(FunctionType::get(ResultType::none, std::vector(1, ValueType::i32))); - } - } - - void addImport(Module& module) - { - if (module.functions.imports.size() == 0 || module.functions.imports.back().exportName.compare(u8"checktime") != 0) { - if (typeSlot < 0) { - addTypeSlot(module); - } - - const U32 functionTypeIndex = typeSlot; - module.functions.imports.push_back({{functionTypeIndex}, std::move(u8"env"), std::move(u8"checktime")}); - } - } - - void conditionallyAddCall(Opcode opcode, const ControlStructureImm& imm, Module& module, OperatorEncoderStream& operatorEncoderStream, CodeValidationStream& codeValidationStream) - { - switch(opcode) - { - case Opcode::loop: - case Opcode::block: - addCall(module, operatorEncoderStream, codeValidationStream); - default: - break; - }; - } - - template - void conditionallyAddCall(Opcode , const Imm& , Module& , OperatorEncoderStream& , CodeValidationStream& ) - { - } - - void adjustIfFunctionIndex(Uptr& index, ObjectKind kind) - { - if (kind == ObjectKind::function) - ++index; - } - - void adjustExportIndex(Module& module) - { - // all function exports need to have their index increased to account for inserted definition - for (auto& exportDef : module.exports) - { - adjustIfFunctionIndex(exportDef.index, exportDef.kind); - } - } - - void adjustCallIndex(const Module& module, CallImm& imm) - { - if (imm.functionIndex >= checktimeIndex(module)) - ++imm.functionIndex; - } - - template - void adjustCallIndex(const Module& , Imm& ) - { - } - -private: - int typeSlot; -}; - -struct NoOpInjection -{ - void addCall(Module& , OperatorEncoderStream& , CodeValidationStream& ) {} - void setTypeSlot(const Module& , ResultType , const std::vector& ) {} - void addTypeSlot(Module& ) {} - void addImport(Module& ) {} - template - void conditionallyAddCall(Opcode , const Imm& , Module& , OperatorEncoderStream& , CodeValidationStream& ) {} - void adjustIfFunctionIndex(Uptr& , ObjectKind ) {} - void adjustExportIndex(Module& ) {} - template - void adjustCallIndex(const Module& , Imm& ) {} -}; - namespace WASM { - using namespace IR; - using namespace Serialization; - - enum + using namespace IR; + using namespace Serialization; + + enum { magicNumber=0x6d736100, // "\0asm" currentVersion=1 @@ -395,9 +277,7 @@ namespace WASM void serialize(Stream& stream,CallIndirectImm& imm,const FunctionDef&) { serializeVarUInt32(stream,imm.type.index); - - U8 reserved = 0; - serializeVarUInt1(stream,reserved); + serializeConstant(stream,"call_indirect immediate reserved field must be 0",U8(0)); } template @@ -409,8 +289,7 @@ namespace WASM template void serialize(Stream& stream,MemoryImm& imm,const FunctionDef&) { - U8 reserved = 0; - serializeVarUInt1(stream,reserved); + serializeConstant(stream,"grow_memory/current_memory immediate reserved field must be 0",U8(0)); } #if ENABLE_SIMD_PROTOTYPE @@ -500,10 +379,10 @@ namespace WASM { serializeConstant(stream,"expected user section (section ID 0)",(U8)SectionType::user); ArrayOutputStream sectionStream; - Serialization::serialize(sectionStream,userSection.name); + serialize(sectionStream,userSection.name); serializeBytes(sectionStream,userSection.data.data(),userSection.data.size()); std::vector sectionBytes = sectionStream.getBytes(); - Serialization::serialize(stream,sectionBytes); + serialize(stream,sectionBytes); } void serialize(InputStream& stream,UserSection& userSection) @@ -513,10 +392,10 @@ namespace WASM serializeVarUInt32(stream,numSectionBytes); MemoryInputStream sectionStream(stream.advance(numSectionBytes),numSectionBytes); - Serialization::serialize(sectionStream,userSection.name); + serialize(sectionStream,userSection.name); throwIfNotValidUTF8(userSection.name); userSection.data.resize(sectionStream.capacity()); - Serialization::serializeBytes(sectionStream,userSection.data.data(),userSection.data.size()); + serializeBytes(sectionStream,userSection.data.data(),userSection.data.size()); assert(!sectionStream.capacity()); } @@ -558,417 +437,386 @@ namespace WASM Serialization::OutputStream& byteStream; FunctionDef& functionDef; }; - - template - struct WasmSerializationImpl - { - Injection injection; - - void serializeFunctionBody(OutputStream& sectionStream,Module& module,FunctionDef& functionDef) - { - ArrayOutputStream bodyStream; - - // Convert the function's local types into LocalSets: runs of locals of the same type. - LocalSet* localSets = (LocalSet*)alloca(sizeof(LocalSet)*functionDef.nonParameterLocalTypes.size()); - Uptr numLocalSets = 0; - if(functionDef.nonParameterLocalTypes.size()) - { - localSets[0].type = ValueType::any; - localSets[0].num = 0; - for(auto localType : functionDef.nonParameterLocalTypes) - { - if(localSets[numLocalSets].type != localType) - { - if(localSets[numLocalSets].type != ValueType::any) { ++numLocalSets; } - localSets[numLocalSets].type = localType; - localSets[numLocalSets].num = 0; - } - ++localSets[numLocalSets].num; - } - if(localSets[numLocalSets].type != ValueType::any) { ++numLocalSets; } - } - - // Serialize the local sets. - serializeVarUInt32(bodyStream,numLocalSets); - for(Uptr setIndex = 0;setIndex < numLocalSets;++setIndex) { serialize(bodyStream,localSets[setIndex]); } - - // Serialize the function code. - OperatorDecoderStream irDecoderStream(functionDef.code); - OperatorSerializerStream wasmOpEncoderStream(bodyStream,functionDef); - while(irDecoderStream) { irDecoderStream.decodeOp(wasmOpEncoderStream); }; - - std::vector bodyBytes = bodyStream.getBytes(); - serialize(sectionStream,bodyBytes); - } - - void serializeFunctionBody(InputStream& sectionStream,Module& module,FunctionDef& functionDef) - { - Uptr numBodyBytes = 0; - serializeVarUInt32(sectionStream,numBodyBytes); - - MemoryInputStream bodyStream(sectionStream.advance(numBodyBytes),numBodyBytes); - - // Deserialize local sets and unpack them into a linear array of local types. - Uptr numLocalSets = 0; - serializeVarUInt32(bodyStream,numLocalSets); - for(Uptr setIndex = 0;setIndex < numLocalSets;++setIndex) - { - LocalSet localSet; - serialize(bodyStream,localSet); - for(Uptr index = 0;index < localSet.num;++index) { functionDef.nonParameterLocalTypes.push_back(localSet.type); } - } - - // Deserialize the function code, validate it, and re-encode it in the IR format. - ArrayOutputStream irCodeByteStream; - - CodeValidationStream codeValidationStream(module,functionDef); - - OperatorEncoderStream irEncoderStream(irCodeByteStream); - injection.addCall(module, irEncoderStream, codeValidationStream); - while(bodyStream.capacity()) - { - Opcode opcode; - serialize(bodyStream,opcode); - switch(opcode) - { - #define VISIT_OPCODE(_,name,nameString,Imm,...) \ - case Opcode::name: \ - { \ - Imm imm; \ - serialize(bodyStream,imm,functionDef); \ - injection.adjustCallIndex(module, imm); \ - codeValidationStream.name(imm); \ - irEncoderStream.name(imm); \ - injection.conditionallyAddCall(opcode, imm, module, irEncoderStream, codeValidationStream); \ - break; \ - } - ENUM_OPERATORS(VISIT_OPCODE) - #undef VISIT_OPCODE - default: throw FatalSerializationException("unknown opcode"); - }; - }; - codeValidationStream.finish(); - - functionDef.code = std::move(irCodeByteStream.getBytes()); - } - - template - void serializeTypeSection(Stream& moduleStream,Module& module) - { - Injection& localInjection = injection; - serializeSection(moduleStream,SectionType::type,[&module,&localInjection](Stream& sectionStream) - { - serializeArray(sectionStream,module.types,[&module,&localInjection](Stream& stream,const FunctionType*& functionType) - { - serializeConstant(stream,"function type tag",U8(0x60)); - if(Stream::isInput) - { - std::vector parameterTypes; - ResultType returnType; - serialize(stream,parameterTypes); - serialize(stream,returnType); - functionType = FunctionType::get(returnType,parameterTypes); - localInjection.setTypeSlot(module, returnType, parameterTypes); - } - else - { - serialize(stream,const_cast&>(functionType->parameters)); - serialize(stream,const_cast(functionType->ret)); - } - }); - }); - - if(Stream::isInput) - { - injection.addTypeSlot(module); - } - } - template - void serializeImportSection(Stream& moduleStream,Module& module) - { - Injection& localInjection = injection; - serializeSection(moduleStream,SectionType::import,[&module,&localInjection](Stream& sectionStream) - { - Uptr size = module.functions.imports.size() - + module.tables.imports.size() - + module.memories.imports.size() - + module.globals.imports.size(); - serializeVarUInt32(sectionStream,size); - if(Stream::isInput) - { - for(Uptr index = 0;index < size;++index) - { - std::string moduleName; - std::string exportName; - ObjectKind kind = ObjectKind::invalid; - serialize(sectionStream,moduleName); - serialize(sectionStream,exportName); - throwIfNotValidUTF8(moduleName); - throwIfNotValidUTF8(exportName); - serialize(sectionStream,kind); - switch(kind) - { - case ObjectKind::function: - { - U32 functionTypeIndex = 0; - serializeVarUInt32(sectionStream,functionTypeIndex); - if(functionTypeIndex >= module.types.size()) - { - throw FatalSerializationException("invalid import function type index"); - } - module.functions.imports.push_back({{functionTypeIndex},std::move(moduleName),std::move(exportName)}); - break; - } - case ObjectKind::table: - { - TableType tableType; - serialize(sectionStream,tableType); - module.tables.imports.push_back({tableType,std::move(moduleName),std::move(exportName)}); - break; - } - case ObjectKind::memory: - { - MemoryType memoryType; - serialize(sectionStream,memoryType); - module.memories.imports.push_back({memoryType,std::move(moduleName),std::move(exportName)}); - break; - } - case ObjectKind::global: - { - GlobalType globalType; - serialize(sectionStream,globalType); - module.globals.imports.push_back({globalType,std::move(moduleName),std::move(exportName)}); - break; - } - default: throw FatalSerializationException("invalid ObjectKind"); - } - } - localInjection.addImport(module); - } - else - { - for(auto& functionImport : module.functions.imports) - { - serialize(sectionStream,functionImport.moduleName); - serialize(sectionStream,functionImport.exportName); - ObjectKind kind = ObjectKind::function; - serialize(sectionStream,kind); - serializeVarUInt32(sectionStream,functionImport.type.index); - } - for(auto& tableImport : module.tables.imports) - { - serialize(sectionStream,tableImport.moduleName); - serialize(sectionStream,tableImport.exportName); - ObjectKind kind = ObjectKind::table; - serialize(sectionStream,kind); - serialize(sectionStream,tableImport.type); - } - for(auto& memoryImport : module.memories.imports) - { - serialize(sectionStream,memoryImport.moduleName); - serialize(sectionStream,memoryImport.exportName); - ObjectKind kind = ObjectKind::memory; - serialize(sectionStream,kind); - serialize(sectionStream,memoryImport.type); - } - for(auto& globalImport : module.globals.imports) - { - serialize(sectionStream,globalImport.moduleName); - serialize(sectionStream,globalImport.exportName); - ObjectKind kind = ObjectKind::global; - serialize(sectionStream,kind); - serialize(sectionStream,globalImport.type); - } - } - }); - } - - template - void serializeFunctionSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::functionDeclarations,[&module](Stream& sectionStream) - { - Uptr numFunctions = module.functions.defs.size(); - serializeVarUInt32(sectionStream,numFunctions); - if(Stream::isInput) - { - // Grow the vector one element at a time: - // try to get a serialization exception before making a huge allocation for malformed input. - module.functions.defs.clear(); - for(Uptr functionIndex = 0;functionIndex < numFunctions;++functionIndex) - { - U32 functionTypeIndex = 0; - serializeVarUInt32(sectionStream,functionTypeIndex); - if(functionTypeIndex >= module.types.size()) { throw FatalSerializationException("invalid function type index"); } - module.functions.defs.push_back({{functionTypeIndex},{},{}}); - } - module.functions.defs.shrink_to_fit(); - } - else - { - for(FunctionDef& function : module.functions.defs) - { - serializeVarUInt32(sectionStream,function.type.index); - } - } - }); - } - - template - void serializeTableSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::table,[&module](Stream& sectionStream) - { - serialize(sectionStream,module.tables.defs); - }); - } - - template - void serializeMemorySection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::memory,[&module](Stream& sectionStream) - { - serialize(sectionStream,module.memories.defs); - }); - } - - template - void serializeGlobalSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::global,[&module](Stream& sectionStream) - { - serialize(sectionStream,module.globals.defs); - }); - } - - template - void serializeExportSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::export_,[&module](Stream& sectionStream) - { - serialize(sectionStream,module.exports); - }); - - injection.adjustExportIndex(module); - } - - template - void serializeStartSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::start,[&module](Stream& sectionStream) - { - serializeVarUInt32(sectionStream,module.startFunctionIndex); - }); - injection.adjustIfFunctionIndex(module.startFunctionIndex, ObjectKind::function); - } - - template - void serializeElementSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::elem,[&module](Stream& sectionStream) - { - serialize(sectionStream,module.tableSegments); - }); - } - - template - void serializeCodeSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::functionDefinitions,[&module,this](Stream& sectionStream) - { - Uptr numFunctionBodies = module.functions.defs.size(); - serializeVarUInt32(sectionStream,numFunctionBodies); - if(Stream::isInput && numFunctionBodies != module.functions.defs.size()) - { throw FatalSerializationException("function and code sections have mismatched function counts"); } - for(FunctionDef& functionDef : module.functions.defs) { serializeFunctionBody(sectionStream,module,functionDef); } - }); - } - - template - void serializeDataSection(Stream& moduleStream,Module& module) - { - serializeSection(moduleStream,SectionType::data,[&module](Stream& sectionStream) - { - serialize(sectionStream,module.dataSegments); - }); - } - - void serializeModule(OutputStream& moduleStream,Module& module) - { - serializeConstant(moduleStream,"magic number",U32(magicNumber)); - serializeConstant(moduleStream,"version",U32(currentVersion)); - - if(module.types.size() > 0) { serializeTypeSection(moduleStream,module); } - if(module.functions.imports.size() > 0 - || module.tables.imports.size() > 0 - || module.memories.imports.size() > 0 - || module.globals.imports.size() > 0) { serializeImportSection(moduleStream,module); } - if(module.functions.defs.size() > 0) { serializeFunctionSection(moduleStream,module); } - if(module.tables.defs.size() > 0) { serializeTableSection(moduleStream,module); } - if(module.memories.defs.size() > 0) { serializeMemorySection(moduleStream,module); } - if(module.globals.defs.size() > 0) { serializeGlobalSection(moduleStream,module); } - if(module.exports.size() > 0) { serializeExportSection(moduleStream,module); } - if(module.startFunctionIndex != UINTPTR_MAX) { serializeStartSection(moduleStream,module); } - if(module.tableSegments.size() > 0) { serializeElementSection(moduleStream,module); } - if(module.functions.defs.size() > 0) { serializeCodeSection(moduleStream,module); } - if(module.dataSegments.size() > 0) { serializeDataSection(moduleStream,module); } - - for(auto& userSection : module.userSections) { serialize(moduleStream,userSection); } - } - void serializeModule(InputStream& moduleStream,Module& module) - { - serializeConstant(moduleStream,"magic number",U32(magicNumber)); - serializeConstant(moduleStream,"version",U32(currentVersion)); - - SectionType lastKnownSectionType = SectionType::unknown; - while(moduleStream.capacity()) - { - const SectionType sectionType = *(SectionType*)moduleStream.peek(sizeof(SectionType)); - if(sectionType != SectionType::user) - { - if(sectionType > lastKnownSectionType) { lastKnownSectionType = sectionType; } - else { throw FatalSerializationException("incorrect order for known section"); } - } - switch(sectionType) - { - case SectionType::type: serializeTypeSection(moduleStream,module); break; - case SectionType::import: serializeImportSection(moduleStream,module); break; - case SectionType::functionDeclarations: serializeFunctionSection(moduleStream,module); break; - case SectionType::table: serializeTableSection(moduleStream,module); break; - case SectionType::memory: serializeMemorySection(moduleStream,module); break; - case SectionType::global: serializeGlobalSection(moduleStream,module); break; - case SectionType::export_: serializeExportSection(moduleStream,module); break; - case SectionType::start: serializeStartSection(moduleStream,module); break; - case SectionType::elem: serializeElementSection(moduleStream,module); break; - case SectionType::functionDefinitions: serializeCodeSection(moduleStream,module); break; - case SectionType::data: serializeDataSection(moduleStream,module); break; - case SectionType::user: - { - UserSection& userSection = *module.userSections.insert(module.userSections.end(),UserSection()); - serialize(moduleStream,userSection); - break; - } - default: throw FatalSerializationException("unknown section ID"); - }; - }; - } - }; - - void serialize(Serialization::InputStream& stream,Module& module) - { - WasmSerializationImpl impl; - impl.serializeModule(stream,module); - IR::validateDefinitions(module); - } - void serializeWithInjection(Serialization::InputStream& stream,Module& module) - { - WasmSerializationImpl impl; - impl.serializeModule(stream,module); - IR::validateDefinitions(module); - } - void serialize(Serialization::OutputStream& stream,const Module& module) - { - WasmSerializationImpl impl; - impl.serializeModule(stream,const_cast(module)); - } + + void serializeFunctionBody(OutputStream& sectionStream,Module& module,FunctionDef& functionDef) + { + ArrayOutputStream bodyStream; + + // Convert the function's local types into LocalSets: runs of locals of the same type. + LocalSet* localSets = (LocalSet*)alloca(sizeof(LocalSet)*functionDef.nonParameterLocalTypes.size()); + Uptr numLocalSets = 0; + if(functionDef.nonParameterLocalTypes.size()) + { + localSets[0].type = ValueType::any; + localSets[0].num = 0; + for(auto localType : functionDef.nonParameterLocalTypes) + { + if(localSets[numLocalSets].type != localType) + { + if(localSets[numLocalSets].type != ValueType::any) { ++numLocalSets; } + localSets[numLocalSets].type = localType; + localSets[numLocalSets].num = 0; + } + ++localSets[numLocalSets].num; + } + if(localSets[numLocalSets].type != ValueType::any) { ++numLocalSets; } + } + + // Serialize the local sets. + serializeVarUInt32(bodyStream,numLocalSets); + for(Uptr setIndex = 0;setIndex < numLocalSets;++setIndex) { serialize(bodyStream,localSets[setIndex]); } + + // Serialize the function code. + OperatorDecoderStream irDecoderStream(functionDef.code); + OperatorSerializerStream wasmOpEncoderStream(bodyStream,functionDef); + while(irDecoderStream) { irDecoderStream.decodeOp(wasmOpEncoderStream); }; + + std::vector bodyBytes = bodyStream.getBytes(); + serialize(sectionStream,bodyBytes); + } + + void serializeFunctionBody(InputStream& sectionStream,Module& module,FunctionDef& functionDef) + { + Uptr numBodyBytes = 0; + serializeVarUInt32(sectionStream,numBodyBytes); + + MemoryInputStream bodyStream(sectionStream.advance(numBodyBytes),numBodyBytes); + + // Deserialize local sets and unpack them into a linear array of local types. + Uptr numLocalSets = 0; + serializeVarUInt32(bodyStream,numLocalSets); + for(Uptr setIndex = 0;setIndex < numLocalSets;++setIndex) + { + LocalSet localSet; + serialize(bodyStream,localSet); + for(Uptr index = 0;index < localSet.num;++index) { functionDef.nonParameterLocalTypes.push_back(localSet.type); } + } + + // Deserialize the function code, validate it, and re-encode it in the IR format. + ArrayOutputStream irCodeByteStream; + OperatorEncoderStream irEncoderStream(irCodeByteStream); + CodeValidationStream codeValidationStream(module,functionDef); + while(bodyStream.capacity()) + { + Opcode opcode; + serialize(bodyStream,opcode); + switch(opcode) + { + #define VISIT_OPCODE(_,name,nameString,Imm,...) \ + case Opcode::name: \ + { \ + Imm imm; \ + serialize(bodyStream,imm,functionDef); \ + codeValidationStream.name(imm); \ + irEncoderStream.name(imm); \ + break; \ + } + ENUM_OPERATORS(VISIT_OPCODE) + #undef VISIT_OPCODE + default: throw FatalSerializationException("unknown opcode"); + }; + }; + codeValidationStream.finish(); + + functionDef.code = std::move(irCodeByteStream.getBytes()); + } + + template + void serializeTypeSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::type,[&module](Stream& sectionStream) + { + serializeArray(sectionStream,module.types,[](Stream& stream,const FunctionType*& functionType) + { + serializeConstant(stream,"function type tag",U8(0x60)); + if(Stream::isInput) + { + std::vector parameterTypes; + ResultType returnType; + serialize(stream,parameterTypes); + serialize(stream,returnType); + functionType = FunctionType::get(returnType,parameterTypes); + } + else + { + serialize(stream,const_cast&>(functionType->parameters)); + serialize(stream,const_cast(functionType->ret)); + } + }); + }); + } + template + void serializeImportSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::import,[&module](Stream& sectionStream) + { + Uptr size = module.functions.imports.size() + + module.tables.imports.size() + + module.memories.imports.size() + + module.globals.imports.size(); + serializeVarUInt32(sectionStream,size); + if(Stream::isInput) + { + for(Uptr index = 0;index < size;++index) + { + std::string moduleName; + std::string exportName; + ObjectKind kind = ObjectKind::invalid; + serialize(sectionStream,moduleName); + serialize(sectionStream,exportName); + throwIfNotValidUTF8(moduleName); + throwIfNotValidUTF8(exportName); + serialize(sectionStream,kind); + switch(kind) + { + case ObjectKind::function: + { + U32 functionTypeIndex = 0; + serializeVarUInt32(sectionStream,functionTypeIndex); + if(functionTypeIndex >= module.types.size()) + { + throw FatalSerializationException("invalid import function type index"); + } + module.functions.imports.push_back({{functionTypeIndex},std::move(moduleName),std::move(exportName)}); + break; + } + case ObjectKind::table: + { + TableType tableType; + serialize(sectionStream,tableType); + module.tables.imports.push_back({tableType,std::move(moduleName),std::move(exportName)}); + break; + } + case ObjectKind::memory: + { + MemoryType memoryType; + serialize(sectionStream,memoryType); + module.memories.imports.push_back({memoryType,std::move(moduleName),std::move(exportName)}); + break; + } + case ObjectKind::global: + { + GlobalType globalType; + serialize(sectionStream,globalType); + module.globals.imports.push_back({globalType,std::move(moduleName),std::move(exportName)}); + break; + } + default: throw FatalSerializationException("invalid ObjectKind"); + } + } + } + else + { + for(auto& functionImport : module.functions.imports) + { + serialize(sectionStream,functionImport.moduleName); + serialize(sectionStream,functionImport.exportName); + ObjectKind kind = ObjectKind::function; + serialize(sectionStream,kind); + serializeVarUInt32(sectionStream,functionImport.type.index); + } + for(auto& tableImport : module.tables.imports) + { + serialize(sectionStream,tableImport.moduleName); + serialize(sectionStream,tableImport.exportName); + ObjectKind kind = ObjectKind::table; + serialize(sectionStream,kind); + serialize(sectionStream,tableImport.type); + } + for(auto& memoryImport : module.memories.imports) + { + serialize(sectionStream,memoryImport.moduleName); + serialize(sectionStream,memoryImport.exportName); + ObjectKind kind = ObjectKind::memory; + serialize(sectionStream,kind); + serialize(sectionStream,memoryImport.type); + } + for(auto& globalImport : module.globals.imports) + { + serialize(sectionStream,globalImport.moduleName); + serialize(sectionStream,globalImport.exportName); + ObjectKind kind = ObjectKind::global; + serialize(sectionStream,kind); + serialize(sectionStream,globalImport.type); + } + } + }); + } + + template + void serializeFunctionSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::functionDeclarations,[&module](Stream& sectionStream) + { + Uptr numFunctions = module.functions.defs.size(); + serializeVarUInt32(sectionStream,numFunctions); + if(Stream::isInput) + { + // Grow the vector one element at a time: + // try to get a serialization exception before making a huge allocation for malformed input. + module.functions.defs.clear(); + for(Uptr functionIndex = 0;functionIndex < numFunctions;++functionIndex) + { + U32 functionTypeIndex = 0; + serializeVarUInt32(sectionStream,functionTypeIndex); + if(functionTypeIndex >= module.types.size()) { throw FatalSerializationException("invalid function type index"); } + module.functions.defs.push_back({{functionTypeIndex},{},{}}); + } + module.functions.defs.shrink_to_fit(); + } + else + { + for(FunctionDef& function : module.functions.defs) + { + serializeVarUInt32(sectionStream,function.type.index); + } + } + }); + } + + template + void serializeTableSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::table,[&module](Stream& sectionStream) + { + serialize(sectionStream,module.tables.defs); + }); + } + + template + void serializeMemorySection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::memory,[&module](Stream& sectionStream) + { + serialize(sectionStream,module.memories.defs); + }); + } + + template + void serializeGlobalSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::global,[&module](Stream& sectionStream) + { + serialize(sectionStream,module.globals.defs); + }); + } + + template + void serializeExportSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::export_,[&module](Stream& sectionStream) + { + serialize(sectionStream,module.exports); + }); + } + + template + void serializeStartSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::start,[&module](Stream& sectionStream) + { + serializeVarUInt32(sectionStream,module.startFunctionIndex); + }); + } + + template + void serializeElementSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::elem,[&module](Stream& sectionStream) + { + serialize(sectionStream,module.tableSegments); + }); + } + + template + void serializeCodeSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::functionDefinitions,[&module](Stream& sectionStream) + { + Uptr numFunctionBodies = module.functions.defs.size(); + serializeVarUInt32(sectionStream,numFunctionBodies); + if(Stream::isInput && numFunctionBodies != module.functions.defs.size()) + { throw FatalSerializationException("function and code sections have mismatched function counts"); } + for(FunctionDef& functionDef : module.functions.defs) { serializeFunctionBody(sectionStream,module,functionDef); } + }); + } + + template + void serializeDataSection(Stream& moduleStream,Module& module) + { + serializeSection(moduleStream,SectionType::data,[&module](Stream& sectionStream) + { + serialize(sectionStream,module.dataSegments); + }); + } + + void serializeModule(OutputStream& moduleStream,Module& module) + { + serializeConstant(moduleStream,"magic number",U32(magicNumber)); + serializeConstant(moduleStream,"version",U32(currentVersion)); + + if(module.types.size() > 0) { serializeTypeSection(moduleStream,module); } + if(module.functions.imports.size() > 0 + || module.tables.imports.size() > 0 + || module.memories.imports.size() > 0 + || module.globals.imports.size() > 0) { serializeImportSection(moduleStream,module); } + if(module.functions.defs.size() > 0) { serializeFunctionSection(moduleStream,module); } + if(module.tables.defs.size() > 0) { serializeTableSection(moduleStream,module); } + if(module.memories.defs.size() > 0) { serializeMemorySection(moduleStream,module); } + if(module.globals.defs.size() > 0) { serializeGlobalSection(moduleStream,module); } + if(module.exports.size() > 0) { serializeExportSection(moduleStream,module); } + if(module.startFunctionIndex != UINTPTR_MAX) { serializeStartSection(moduleStream,module); } + if(module.tableSegments.size() > 0) { serializeElementSection(moduleStream,module); } + if(module.functions.defs.size() > 0) { serializeCodeSection(moduleStream,module); } + if(module.dataSegments.size() > 0) { serializeDataSection(moduleStream,module); } + + for(auto& userSection : module.userSections) { serialize(moduleStream,userSection); } + } + void serializeModule(InputStream& moduleStream,Module& module) + { + serializeConstant(moduleStream,"magic number",U32(magicNumber)); + serializeConstant(moduleStream,"version",U32(currentVersion)); + + SectionType lastKnownSectionType = SectionType::unknown; + while(moduleStream.capacity()) + { + const SectionType sectionType = *(SectionType*)moduleStream.peek(sizeof(SectionType)); + if(sectionType != SectionType::user) + { + if(sectionType > lastKnownSectionType) { lastKnownSectionType = sectionType; } + else { throw FatalSerializationException("incorrect order for known section"); } + } + switch(sectionType) + { + case SectionType::type: serializeTypeSection(moduleStream,module); break; + case SectionType::import: serializeImportSection(moduleStream,module); break; + case SectionType::functionDeclarations: serializeFunctionSection(moduleStream,module); break; + case SectionType::table: serializeTableSection(moduleStream,module); break; + case SectionType::memory: serializeMemorySection(moduleStream,module); break; + case SectionType::global: serializeGlobalSection(moduleStream,module); break; + case SectionType::export_: serializeExportSection(moduleStream,module); break; + case SectionType::start: serializeStartSection(moduleStream,module); break; + case SectionType::elem: serializeElementSection(moduleStream,module); break; + case SectionType::functionDefinitions: serializeCodeSection(moduleStream,module); break; + case SectionType::data: serializeDataSection(moduleStream,module); break; + case SectionType::user: + { + UserSection& userSection = *module.userSections.insert(module.userSections.end(),UserSection()); + serialize(moduleStream,userSection); + break; + } + default: throw FatalSerializationException("unknown section ID"); + }; + }; + } + + void serialize(Serialization::InputStream& stream,Module& module) + { + serializeModule(stream,module); + IR::validateDefinitions(module); + } + void serialize(Serialization::OutputStream& stream,const Module& module) + { + serializeModule(stream,const_cast(module)); + } } diff --git a/libraries/wasm-jit/Test/spec/binary.wast b/libraries/wasm-jit/Test/spec/binary.wast index 3e971a203573d73ab0e5d769df07369435cc03f2..8cfeed46f7b2d630ba83412273cf5b7db5abf8ab 100644 --- a/libraries/wasm-jit/Test/spec/binary.wast +++ b/libraries/wasm-jit/Test/spec/binary.wast @@ -42,3 +42,61 @@ (assert_malformed (module binary "\00asm\00\01\00\00") "unknown binary version") (assert_malformed (module binary "\00asm\00\00\01\00") "unknown binary version") (assert_malformed (module binary "\00asm\00\00\00\01") "unknown binary version") + +;; call_indirect reserved byte equal to zero. +(assert_malformed + (module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\04\04\01\70\00\00" ;; Table section + "\0a\09\01" ;; Code section + + ;; function 0 + "\07\00" + "\41\00" ;; i32.const 0 + "\11\00" ;; call_indirect (type 0) + "\01" ;; call_indirect reserved byte is not equal to zero! + "\0b" ;; end + ) + "zero flag expected" +) + +;; grow_memory reserved byte equal to zero. +(assert_malformed + (module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\05\03\01\00\00" ;; Memory section + "\0a\09\01" ;; Code section + + ;; function 0 + "\07\00" + "\41\00" ;; i32.const 0 + "\40" ;; grow_memory + "\01" ;; grow_memory reserved byte is not equal to zero! + "\1a" ;; drop + "\0b" ;; end + ) + "zero flag expected" +) + +;; current_memory reserved byte equal to zero. +(assert_malformed + (module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\05\03\01\00\00" ;; Memory section + "\0a\07\01" ;; Code section + + ;; function 0 + "\05\00" + "\3f" ;; current_memory + "\01" ;; current_memory reserved byte is not equal to zero! + "\1a" ;; drop + "\0b" ;; end + ) + "zero flag expected" +) diff --git a/plugins/chain_plugin/chain_plugin.cpp b/plugins/chain_plugin/chain_plugin.cpp index bc3941f3259b688e650549d19033580ef58cea0f..b52ffb2ad55b92ba5cc6cc5f9a627c559d69e15b 100644 --- a/plugins/chain_plugin/chain_plugin.cpp +++ b/plugins/chain_plugin/chain_plugin.cpp @@ -10,7 +10,7 @@ #include #include #include - +#include #include #include @@ -27,6 +27,7 @@ namespace eosio { using namespace eosio; using namespace eosio::chain; using namespace eosio::chain::config; +using vm_type = wasm_interface::vm_type; using fc::flat_map; //using txn_msg_rate_limits = chain_controller::txn_msg_rate_limits; @@ -49,6 +50,7 @@ public: uint32_t max_reversible_block_time_ms; uint32_t max_pending_transaction_time_ms; //txn_msg_rate_limits rate_limits; + fc::optional wasm_runtime; }; chain_plugin::chain_plugin() @@ -69,6 +71,7 @@ void chain_plugin::set_program_options(options_description& cli, options_descrip "Limits the maximum time (in milliseconds) that a reversible block is allowed to run before being considered invalid") ("max-pending-transaction-time", bpo::value()->default_value(-1), "Limits the maximum time (in milliseconds) that is allowed a pushed transaction's code to execute before being considered invalid") + ("wasm-runtime", bpo::value()->value_name("wavm/binaryen"), "Override default WASM runtime") #warning TODO: rate limiting /*("per-authorized-account-transaction-msg-rate-limit-time-frame-sec", bpo::value()->default_value(default_per_auth_account_time_frame_seconds), "The time frame, in seconds, that the per-authorized-account-transaction-msg-rate-limit is imposed over.") @@ -161,6 +164,9 @@ void chain_plugin::plugin_initialize(const variables_map& options) { my->max_reversible_block_time_ms = options.at("max-reversible-block-time").as(); my->max_pending_transaction_time_ms = options.at("max-pending-transaction-time").as(); + if(options.count("wasm-runtime")) + my->wasm_runtime = options.at("wasm-runtime").as(); + #warning TODO: Rate Limits /*my->rate_limits.per_auth_account_time_frame_sec = fc::time_point_sec(options.at("per-authorized-account-transaction-msg-rate-limit-time-frame-sec").as()); my->rate_limits.per_auth_account = options.at("per-authorized-account-transaction-msg-rate-limit").as(); @@ -190,6 +196,9 @@ void chain_plugin::plugin_startup() my->chain_config->limits.max_push_transaction_us = fc::milliseconds(my->max_pending_transaction_time_ms); } + if(my->wasm_runtime) + my->chain_config->wasm_runtime = *my->wasm_runtime; + my->chain.emplace(*my->chain_config); if(!my->readonly) { diff --git a/plugins/mongo_db_plugin/mongo_db_plugin.cpp b/plugins/mongo_db_plugin/mongo_db_plugin.cpp index 7010cab9ea1e793819446a9a698229c27ac8d532..3a3508c89df0566e89d80312660b0bf800f8d258 100644 --- a/plugins/mongo_db_plugin/mongo_db_plugin.cpp +++ b/plugins/mongo_db_plugin/mongo_db_plugin.cpp @@ -774,7 +774,7 @@ void mongo_db_plugin::set_program_options(options_description& cli, options_desc { cfg.add_options() ("mongodb-queue-size,q", bpo::value()->default_value(256), - "The queue size between eosiod and MongoDB plugin thread.") + "The queue size between nodeos and MongoDB plugin thread.") ("mongodb-uri,m", bpo::value(), "MongoDB URI connection string, see: https://docs.mongodb.com/master/reference/connection-string/." " If not specified then plugin is disabled. Default database 'EOS' is used if not specified in URI.") diff --git a/programs/CMakeLists.txt b/programs/CMakeLists.txt index 338254a37421be53f4e049627c8607b1da83d250..b5f962f1e97e2a1ff3df8b8ce58591a248aa2c8d 100644 --- a/programs/CMakeLists.txt +++ b/programs/CMakeLists.txt @@ -1,5 +1,5 @@ -add_subdirectory( eosiod ) -add_subdirectory( eosioc ) +add_subdirectory( nodeos ) +add_subdirectory( cleos ) add_subdirectory( eosiowd ) add_subdirectory( eosio-launcher ) add_subdirectory( eosio-applesedemo ) diff --git a/programs/eosioc/CLI11.hpp b/programs/cleos/CLI11.hpp similarity index 100% rename from programs/eosioc/CLI11.hpp rename to programs/cleos/CLI11.hpp diff --git a/programs/eosioc/CMakeLists.txt b/programs/cleos/CMakeLists.txt similarity index 71% rename from programs/eosioc/CMakeLists.txt rename to programs/cleos/CMakeLists.txt index 19e30cd5a0c4b2fdf90d8054aada9078dfe11955..938032d1f1928ce216a460e100b89f668a88d7e2 100644 --- a/programs/eosioc/CMakeLists.txt +++ b/programs/cleos/CMakeLists.txt @@ -1,4 +1,4 @@ -add_executable( eosioc main.cpp httpc.cpp help_text.cpp localize.hpp config.hpp CLI11.hpp) +add_executable( cleos main.cpp httpc.cpp help_text.cpp localize.hpp config.hpp CLI11.hpp) if( UNIX AND NOT APPLE ) set(rt_library rt ) endif() @@ -15,28 +15,30 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../.git) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --short=8 HEAD WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.." - OUTPUT_VARIABLE "eosc_BUILD_VERSION" + OUTPUT_VARIABLE "cleos_BUILD_VERSION" ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Git commit revision: ${eosc_BUILD_VERSION}") + message(STATUS "Git commit revision: ${cleos_BUILD_VERSION}") else() - set(eosc_BUILD_VERSION 0) + set(cleos_BUILD_VERSION 0) endif() +else() + set(cleos_BUILD_VERSION 0) endif() find_package(Intl REQUIRED) set(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale) -set(LOCALEDOMAIN eosioc) +set(LOCALEDOMAIN cleos) configure_file(config.hpp.in config.hpp ESCAPE_QUOTES) -target_include_directories(eosioc PUBLIC ${Intl_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) +target_include_directories(cleos PUBLIC ${Intl_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) -target_link_libraries( eosioc +target_link_libraries( cleos PRIVATE appbase chain_api_plugin producer_plugin chain_plugin http_plugin eosio_chain fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ${Intl_LIBRARIES} ) install( TARGETS - eosioc + cleos RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} diff --git a/programs/eosioc/config.hpp.in b/programs/cleos/config.hpp.in similarity index 84% rename from programs/eosioc/config.hpp.in rename to programs/cleos/config.hpp.in index 781720ddb9374eb1a185ac438a95f297f2ce6a82..37081daf3f47f49100fb5d685502d59378c29856 100644 --- a/programs/eosioc/config.hpp.in +++ b/programs/cleos/config.hpp.in @@ -5,7 +5,7 @@ */ namespace eosio { namespace client { namespace config { - constexpr char version_str[] = "${eosc_BUILD_VERSION}"; + constexpr char version_str[] = "${cleos_BUILD_VERSION}"; constexpr char locale_path[] = "${LOCALEDIR}"; constexpr char locale_domain[] = "${LOCALEDOMAIN}"; }}} diff --git a/programs/eosioc/eosc.pot b/programs/cleos/eosc.pot similarity index 100% rename from programs/eosioc/eosc.pot rename to programs/cleos/eosc.pot diff --git a/programs/eosioc/help_text.cpp b/programs/cleos/help_text.cpp similarity index 99% rename from programs/eosioc/help_text.cpp rename to programs/cleos/help_text.cpp index 62a39ba5d3ede610fd2ff15144f55fbe5da00639..e02446f7d2df20aa70c3ce88912d480b21e2c41b 100644 --- a/programs/eosioc/help_text.cpp +++ b/programs/cleos/help_text.cpp @@ -63,7 +63,7 @@ const char* duplicate_key_import_help_text = _("This key is already imported int const char* unknown_abi_table_help_text = _(R"text(The ABI for the code on account "${1}" does not specify table "${2}". Please check the account and table name, and verify that the account has the expected code using: - eosioc get code ${1})text"); + cleos get code ${1})text"); const char* help_regex_error = _("Error locating help text: ${code} ${what}"); @@ -276,4 +276,4 @@ bool print_help_text(const fc::exception& e) { return result; } -}}} \ No newline at end of file +}}} diff --git a/programs/eosioc/help_text.hpp b/programs/cleos/help_text.hpp similarity index 100% rename from programs/eosioc/help_text.hpp rename to programs/cleos/help_text.hpp diff --git a/programs/eosioc/httpc.cpp b/programs/cleos/httpc.cpp similarity index 100% rename from programs/eosioc/httpc.cpp rename to programs/cleos/httpc.cpp diff --git a/programs/eosioc/httpc.hpp b/programs/cleos/httpc.hpp similarity index 100% rename from programs/eosioc/httpc.hpp rename to programs/cleos/httpc.hpp diff --git a/programs/eosioc/localize.hpp b/programs/cleos/localize.hpp similarity index 100% rename from programs/eosioc/localize.hpp rename to programs/cleos/localize.hpp diff --git a/programs/eosioc/main.cpp b/programs/cleos/main.cpp similarity index 100% rename from programs/eosioc/main.cpp rename to programs/cleos/main.cpp diff --git a/programs/eosio-launcher/main.cpp b/programs/eosio-launcher/main.cpp index a4eb8583325b952e188e4ce25aaea68baebe8dba..9a11180b50207219adb9f37f61530ff9fc1ee59b 100644 --- a/programs/eosio-launcher/main.cpp +++ b/programs/eosio-launcher/main.cpp @@ -33,7 +33,7 @@ #include "config.hpp" using namespace std; -namespace bf = boost::filesystem; +namespace bfs = boost::filesystem; namespace bp = boost::process; namespace bpo = boost::program_options; using boost::asio::ip::tcp; @@ -270,7 +270,7 @@ struct remote_deploy { string scp_cmd = "/usr/bin/scp"; string ssh_identity; string ssh_args; - bf::path local_config_file = "temp_config"; + bfs::path local_config_file = "temp_config"; }; struct testnet_def { @@ -330,11 +330,11 @@ struct launcher_def { size_t next_node; string shape; allowed_connection allowed_connections = PC_NONE; - bf::path genesis; - bf::path output; - bf::path host_map_file; - bf::path server_ident_file; - bf::path stage; + bfs::path genesis; + bfs::path output; + bfs::path host_map_file; + bfs::path server_ident_file; + bfs::path stage; string erd; string data_dir_base; @@ -365,8 +365,8 @@ struct launcher_def { host_def *find_host (const string &name); host_def *find_host_by_name_or_address (const string &name); host_def *deploy_config_files (tn_node_def &node); - string compose_scp_command (const host_def &host, const bf::path &source, - const bf::path &destination); + string compose_scp_command (const host_def &host, const bfs::path &source, + const bfs::path &destination); void write_config_file (tn_node_def &node); void write_logging_config_file (tn_node_def &node); void write_genesis_file (tn_node_def &node); @@ -396,15 +396,15 @@ launcher_def::set_options (bpo::options_description &cli) { ("pnodes,p",bpo::value(&prod_nodes)->default_value(1),"number of nodes that are producers") ("mode,m",bpo::value>()->multitoken()->default_value({"any"}, "any"),"connection mode, combination of \"any\", \"producers\", \"specified\", \"none\"") ("shape,s",bpo::value(&shape)->default_value("star"),"network topology, use \"star\" \"mesh\" or give a filename for custom") - ("genesis,g",bpo::value(&genesis)->default_value("./genesis.json"),"set the path to genesis.json") - ("output,o",bpo::value(&output),"save a copy of the generated topology in this file") + ("genesis,g",bpo::value(&genesis)->default_value("./genesis.json"),"set the path to genesis.json") + ("output,o",bpo::value(&output),"save a copy of the generated topology in this file") ("skip-signature", bpo::bool_switch(&skip_transaction_signatures)->default_value(false), "EOSD does not require transaction signatures.") - ("eosiod", bpo::value(&eosd_extra_args), "forward eosiod command line argument(s) to each instance of eosiod, enclose arg in quotes") + ("nodeos", bpo::value(&eosd_extra_args), "forward nodeos command line argument(s) to each instance of nodeos, enclose arg in quotes") ("delay,d",bpo::value(&start_delay)->default_value(0),"seconds delay before starting each node after the first") ("nogen",bpo::bool_switch(&nogen)->default_value(false),"launch nodes without writing new config files") - ("host-map",bpo::value(&host_map_file)->default_value(""),"a file containing mapping specific nodes to hosts. Used to enhance the custom shape argument") - ("servers",bpo::value(&server_ident_file)->default_value(""),"a file containing ip addresses and names of individual servers to deploy as producers or observers ") - ("per-host",bpo::value(&per_host)->default_value(0),"specifies how many eosiod instances will run on a single host. Use 0 to indicate all on one.") + ("host-map",bpo::value(&host_map_file)->default_value(""),"a file containing mapping specific nodes to hosts. Used to enhance the custom shape argument") + ("servers",bpo::value(&server_ident_file)->default_value(""),"a file containing ip addresses and names of individual servers to deploy as producers or observers ") + ("per-host",bpo::value(&per_host)->default_value(0),"specifies how many nodeos instances will run on a single host. Use 0 to indicate all on one.") ("network-name",bpo::value(&network.name)->default_value("testnet_"),"network name prefix used in GELF logging source") ("enable-gelf-logging",bpo::value(&gelf_enabled)->default_value(true),"enable gelf logging appender in logging configuration file") ("gelf-endpoint",bpo::value(&gelf_endpoint)->default_value("10.160.11.21:12201"),"hostname:port or ip:port of GELF endpoint") @@ -452,7 +452,7 @@ launcher_def::initialize (const variables_map &vmap) { boost::iequals( shape, "star" ) || boost::iequals( shape, "mesh" )) && host_map_file.empty()) { - bf::path src = shape; + bfs::path src = shape; host_map_file = src.stem().string() + "_hosts.json"; } @@ -492,13 +492,13 @@ launcher_def::initialize (const variables_map &vmap) { erd.clear(); } - stage = bf::path(erd); - if (!bf::exists(stage)) { + stage = bfs::path(erd); + if (!bfs::exists(stage)) { cerr << erd << " is not a valid path" << endl; exit (-1); } - stage /= bf::path("staging"); - bf::create_directory (stage); + stage /= bfs::path("staging"); + bfs::create_directory (stage); if (bindings.empty()) { define_network (); @@ -567,22 +567,22 @@ launcher_def::generate () { write_dot_file (); if (!output.empty()) { - bf::path savefile = output; + bfs::path savefile = output; { - bf::ofstream sf (savefile); + bfs::ofstream sf (savefile); sf << fc::json::to_pretty_string (network) << endl; sf.close(); } if (host_map_file.empty()) { - savefile = bf::path (output.stem().string() + "_hosts.json"); + savefile = bfs::path (output.stem().string() + "_hosts.json"); } else { - savefile = bf::path (host_map_file); + savefile = bfs::path (host_map_file); } { - bf::ofstream sf (savefile); + bfs::ofstream sf (savefile); sf << fc::json::to_pretty_string (bindings) << endl; sf.close(); @@ -594,7 +594,7 @@ launcher_def::generate () { void launcher_def::write_dot_file () { - bf::ofstream df ("testnet.dot"); + bfs::ofstream df ("testnet.dot"); df << "digraph G\n{\nlayout=\"circo\";\n"; for (auto &node : network.nodes) { for (const auto &p : node.second.peers) { @@ -761,20 +761,20 @@ launcher_def::deploy_config_files (tn_node_def &node) { eosd_def &instance = *node.instance; host_def *host = find_host (instance.host); - bf::path source = stage / instance.data_dir / "config.ini"; - bf::path logging_source = stage / instance.data_dir / "logging.json"; - bf::path genesis_source = stage / instance.data_dir / "genesis.json"; + bfs::path source = stage / instance.data_dir / "config.ini"; + bfs::path logging_source = stage / instance.data_dir / "logging.json"; + bfs::path genesis_source = stage / instance.data_dir / "genesis.json"; if (host->is_local()) { - bf::path dd = bf::path(host->eos_root_dir) / instance.data_dir; - if (bf::exists (dd)) { + bfs::path dd = bfs::path(host->eos_root_dir) / instance.data_dir; + if (bfs::exists (dd)) { if (force_overwrite) { - int64_t count = bf::remove_all (dd / block_dir, ec); + int64_t count = bfs::remove_all (dd / block_dir, ec); if (ec.value() != 0) { cerr << "count = " << count << " could not remove old directory: " << dd << " " << strerror(ec.value()) << endl; exit (-1); } - count = bf::remove_all (dd / shared_mem_dir, ec); + count = bfs::remove_all (dd / shared_mem_dir, ec); if (ec.value() != 0) { cerr << "count = " << count << " could not remove old directory: " << dd << " " << strerror(ec.value()) << endl; @@ -785,19 +785,19 @@ launcher_def::deploy_config_files (tn_node_def &node) { cerr << dd << " already exists. Use -f/--force to overwrite configuration and erase blockchain" << endl; exit (-1); } - } else if (!bf::create_directory (instance.data_dir, ec) && ec.value()) { + } else if (!bfs::create_directory (instance.data_dir, ec) && ec.value()) { cerr << "could not create new directory: " << instance.data_dir << " errno " << ec.value() << " " << strerror(ec.value()) << endl; exit (-1); } - bf::copy_file (genesis_source, dd / "genesis.json", bf::copy_option::overwrite_if_exists); - bf::copy_file (logging_source, dd / "logging.json", bf::copy_option::overwrite_if_exists); - bf::copy_file (source, dd / "config.ini", bf::copy_option::overwrite_if_exists); + bfs::copy_file (genesis_source, dd / "genesis.json", bfs::copy_option::overwrite_if_exists); + bfs::copy_file (logging_source, dd / "logging.json", bfs::copy_option::overwrite_if_exists); + bfs::copy_file (source, dd / "config.ini", bfs::copy_option::overwrite_if_exists); } else { prep_remote_config_dir (instance, host); - bf::path dpath = bf::path (host->eos_root_dir) / instance.data_dir / "config.ini"; + bfs::path dpath = bfs::path (host->eos_root_dir) / instance.data_dir / "config.ini"; auto scp_cmd_line = compose_scp_command(*host, source, dpath); @@ -808,7 +808,7 @@ launcher_def::deploy_config_files (tn_node_def &node) { exit(-1); } - dpath = bf::path (host->eos_root_dir) / instance.data_dir / "logging.json"; + dpath = bfs::path (host->eos_root_dir) / instance.data_dir / "logging.json"; scp_cmd_line = compose_scp_command(*host, logging_source, dpath); @@ -818,7 +818,7 @@ launcher_def::deploy_config_files (tn_node_def &node) { exit(-1); } - dpath = bf::path (host->eos_root_dir) / instance.data_dir / "genesis.json"; + dpath = bfs::path (host->eos_root_dir) / instance.data_dir / "genesis.json"; scp_cmd_line = compose_scp_command(*host, genesis_source, dpath); @@ -832,7 +832,7 @@ launcher_def::deploy_config_files (tn_node_def &node) { } string -launcher_def::compose_scp_command (const host_def& host, const bf::path& source, const bf::path& destination) { +launcher_def::compose_scp_command (const host_def& host, const bfs::path& source, const bfs::path& destination) { string scp_cmd_line = network.ssh_helper.scp_cmd + " "; const string &args = host.ssh_args.length() ? host.ssh_args : network.ssh_helper.ssh_args; if (args.length()) { @@ -852,18 +852,18 @@ launcher_def::compose_scp_command (const host_def& host, const bf::path& source, void launcher_def::write_config_file (tn_node_def &node) { - bf::path filename; + bfs::path filename; eosd_def &instance = *node.instance; host_def *host = find_host (instance.host); - bf::path dd = stage / instance.data_dir; - if (!bf::exists(dd)) { - bf::create_directory(dd); + bfs::path dd = stage / instance.data_dir; + if (!bfs::exists(dd)) { + bfs::create_directory(dd); } filename = dd / "config.ini"; - bf::ofstream cfg(filename); + bfs::ofstream cfg(filename); if (!cfg.good()) { cerr << "unable to open " << filename << " " << strerror(errno) << "\n"; exit (-1); @@ -918,17 +918,17 @@ launcher_def::write_config_file (tn_node_def &node) { void launcher_def::write_logging_config_file(tn_node_def &node) { - bf::path filename; + bfs::path filename; eosd_def &instance = *node.instance; - bf::path dd = stage / instance.data_dir; - if (!bf::exists(dd)) { - bf::create_directory(dd); + bfs::path dd = stage / instance.data_dir; + if (!bfs::exists(dd)) { + bfs::create_directory(dd); } filename = dd / "logging.json"; - bf::ofstream cfg(filename); + bfs::ofstream cfg(filename); if (!cfg.good()) { cerr << "unable to open " << filename << " " << strerror(errno) << "\n"; exit (9); @@ -952,18 +952,18 @@ launcher_def::write_logging_config_file(tn_node_def &node) { void launcher_def::write_genesis_file(tn_node_def &node) { - bf::path filename; + bfs::path filename; eosd_def &instance = *node.instance; - bf::path dd = stage / instance.data_dir; - if (!bf::exists(dd)) { - bf::create_directory(dd); + bfs::path dd = stage / instance.data_dir; + if (!bfs::exists(dd)) { + bfs::create_directory(dd); } filename = dd / "genesis.json"; - bf::path genesis_source = bf::current_path() / "etc"/ "eosio" / "node_00" / "genesis.json"; - bf::copy_file(genesis_source, filename, bf::copy_option::overwrite_if_exists); + bfs::path genesis_source = bfs::current_path() / "etc"/ "eosio" / "node_00" / "genesis.json"; + bfs::copy_file(genesis_source, filename, bfs::copy_option::overwrite_if_exists); } void @@ -1062,7 +1062,7 @@ launcher_def::make_mesh () { void launcher_def::make_custom () { - bf::path source = shape; + bfs::path source = shape; fc::json::from_file(source).as(network); for (auto &h : bindings) { for (auto &inst : h.instances) { @@ -1099,7 +1099,7 @@ launcher_def::do_ssh (const string &cmd, const string &host_name) { void launcher_def::prep_remote_config_dir (eosd_def &node, host_def *host) { - bf::path abs_data_dir = bf::path(host->eos_root_dir) / node.data_dir; + bfs::path abs_data_dir = bfs::path(host->eos_root_dir) / node.data_dir; string add = abs_data_dir.string(); string cmd = "cd " + host->eos_root_dir; if (!do_ssh(cmd, host->host_name)) { @@ -1135,18 +1135,18 @@ launcher_def::prep_remote_config_dir (eosd_def &node, host_def *host) { void launcher_def::launch (eosd_def &instance, string >s) { - bf::path dd = instance.data_dir; - bf::path reout = dd / "stdout.txt"; - bf::path reerr_sl = dd / "stderr.txt"; - bf::path reerr_base = bf::path("stderr." + launch_time + ".txt"); - bf::path reerr = dd / reerr_base; - bf::path pidf = dd / "eosiod.pid"; + bfs::path dd = instance.data_dir; + bfs::path reout = dd / "stdout.txt"; + bfs::path reerr_sl = dd / "stderr.txt"; + bfs::path reerr_base = bfs::path("stderr." + launch_time + ".txt"); + bfs::path reerr = dd / reerr_base; + bfs::path pidf = dd / "nodeos.pid"; host_def* host = deploy_config_files (*instance.node); node_rt_info info; info.remote = !host->is_local(); - string eosdcmd = "programs/eosiod/eosiod "; + string eosdcmd = "programs/nodeos/nodeos "; if (skip_transaction_signatures) { eosdcmd += "--skip-transaction-signatures "; } @@ -1184,10 +1184,10 @@ launcher_def::launch (eosd_def &instance, string >s) { cerr << "spawning child, " << eosdcmd << endl; bp::child c(eosdcmd, bp::std_out > reout, bp::std_err > reerr ); - bf::remove(reerr_sl); - bf::create_symlink (reerr_base, reerr_sl); + bfs::remove(reerr_sl); + bfs::create_symlink (reerr_base, reerr_sl); - bf::ofstream pidout (pidf); + bfs::ofstream pidout (pidf); pidout << c.id() << flush; pidout.close(); @@ -1230,7 +1230,7 @@ launcher_def::kill (launch_modes mode, string sig_opt) { case LM_ALL: case LM_LOCAL: case LM_REMOTE : { - bf::path source = "last_run.json"; + bfs::path source = "last_run.json"; fc::json::from_file(source).as(last_run); for (auto &info : last_run.running_nodes) { if (mode == LM_ALL || (info.remote && mode == LM_REMOTE) || @@ -1400,8 +1400,8 @@ launcher_def::start_all (string >s, launch_modes mode) { break; } } - bf::path savefile = "last_run.json"; - bf::ofstream sf (savefile); + bfs::path savefile = "last_run.json"; + bfs::ofstream sf (savefile); sf << fc::json::to_pretty_string (last_run) << endl; sf.close(); diff --git a/programs/eosiod/CMakeLists.txt b/programs/nodeos/CMakeLists.txt similarity index 86% rename from programs/eosiod/CMakeLists.txt rename to programs/nodeos/CMakeLists.txt index 9a7c78ff18a3ac1bef4505675161f050315d6eed..686df186ef50a0fa84354de3e06f202747e6804d 100644 --- a/programs/eosiod/CMakeLists.txt +++ b/programs/nodeos/CMakeLists.txt @@ -1,11 +1,11 @@ -add_executable( eosiod main.cpp ) +add_executable( nodeos main.cpp ) if( UNIX AND NOT APPLE ) set(rt_library rt ) endif() find_package( Gperftools QUIET ) if( GPERFTOOLS_FOUND ) - message( STATUS "Found gperftools; compiling eosiod with TCMalloc") + message( STATUS "Found gperftools; compiling nodeos with TCMalloc") list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) endif() @@ -15,18 +15,20 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../.git) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --short=8 HEAD WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.." - OUTPUT_VARIABLE "eosiod_BUILD_VERSION" + OUTPUT_VARIABLE "nodeos_BUILD_VERSION" ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Git commit revision: ${eosiod_BUILD_VERSION}") + message(STATUS "Git commit revision: ${nodeos_BUILD_VERSION}") else() - set(eosiod_BUILD_VERSION 0) + set(nodeos_BUILD_VERSION 0) endif() +else() + set(nodeos_BUILD_VERSION 0) endif() configure_file(config.hpp.in config.hpp ESCAPE_QUOTES) -target_include_directories(eosiod PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) +target_include_directories(nodeos PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) if(UNIX) if(APPLE) @@ -41,7 +43,7 @@ else() set(no_whole_archive_flag "--no-whole-archive") endif() -target_link_libraries( eosiod +target_link_libraries( nodeos PRIVATE appbase PRIVATE -Wl,${whole_archive_flag} account_history_api_plugin -Wl,${no_whole_archive_flag} account_history_plugin PRIVATE -Wl,${whole_archive_flag} chain_api_plugin -Wl,${no_whole_archive_flag} producer_plugin chain_plugin @@ -51,12 +53,12 @@ target_link_libraries( eosiod PRIVATE eosio_chain fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) if(BUILD_MONGO_DB_PLUGIN) - target_link_libraries( eosiod + target_link_libraries( nodeos PRIVATE -Wl,${whole_archive_flag} mongo_db_plugin -Wl,${no_whole_archive_flag} ) endif() install( TARGETS - eosiod + nodeos RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} diff --git a/programs/eosiod/config.hpp.in b/programs/nodeos/config.hpp.in similarity index 82% rename from programs/eosiod/config.hpp.in rename to programs/nodeos/config.hpp.in index 3eba7c7a66c9210d481fd2bafc0d2e8150f83b43..8afd248eafff1b7f949494b8029c8ac20419f014 100644 --- a/programs/eosiod/config.hpp.in +++ b/programs/nodeos/config.hpp.in @@ -9,8 +9,8 @@ #ifndef CONFIG_HPP_IN #define CONFIG_HPP_IN -namespace eosio { namespace eosiod { namespace config { - constexpr uint64_t version = 0x${eosiod_BUILD_VERSION}; +namespace eosio { namespace nodeos { namespace config { + constexpr uint64_t version = 0x${nodeos_BUILD_VERSION}; template std::string itoh(I n, size_t hlen = sizeof(I)<<1) { diff --git a/programs/eosiod/main.cpp b/programs/nodeos/main.cpp similarity index 96% rename from programs/eosiod/main.cpp rename to programs/nodeos/main.cpp index fb2666fca8951d250a4037a7a94eb9bd69fca81b..116ddec8b0adbf5915b5db51e401711c03f789f9 100644 --- a/programs/eosiod/main.cpp +++ b/programs/nodeos/main.cpp @@ -100,14 +100,14 @@ bfs::path determine_root_directory() int main(int argc, char** argv) { try { - app().set_version(eosio::eosiod::config::version); + app().set_version(eosio::nodeos::config::version); bfs::path root = determine_root_directory(); app().set_default_data_dir(root / "var/lib/eosio/node_00"); app().set_default_config_dir(root / "etc/eosio/node_00"); if(!app().initialize(argc, argv)) return -1; initialize_logging(); - ilog("eosiod version ${ver}", ("ver", eosio::eosiod::config::itoh(static_cast(app().version())))); + ilog("nodeos version ${ver}", ("ver", eosio::nodeos::config::itoh(static_cast(app().version())))); ilog("eosio root is ${root}", ("root", root.string())); app().startup(); app().exec(); diff --git a/scripts/eosio-tn_bounce.sh b/scripts/eosio-tn_bounce.sh index 7dc3647f832dc4ba6dff415d9863f4519d9dcec4..b82ff465c93aef6020ac9f66c7c2224556c0c76b 100755 --- a/scripts/eosio-tn_bounce.sh +++ b/scripts/eosio-tn_bounce.sh @@ -13,9 +13,26 @@ cd $EOSIO_HOME -prog=eosd -if [ ! \( -f programs/$prog/$prog \) ]; then - prog=eosiod +prog="" +RD="" +for p in eosd eosiod nodeos; do + prog=$p + RD=bin + if [ -f $RD/$prog ]; then + break; + else + RD=programs/$prog + if [ -f $RD/$prog ]; then + break; + fi + fi + prog="" + RD="" +done + +if [ \( -z "$prog" \) -o \( -z "$RD" \) ]; then + echo unable to locate binary for eosd or eosiod or nodeos + exit 1 fi if [ -z "$EOSIO_TN_NODE" ]; then diff --git a/scripts/eosio-tn_down.sh b/scripts/eosio-tn_down.sh index 0b98ab3ff3cf08c4f4bcb709f725bad7a3800006..8050c0ade45d99206acef4c39afb1a7149109f01 100755 --- a/scripts/eosio-tn_down.sh +++ b/scripts/eosio-tn_down.sh @@ -12,7 +12,7 @@ fi prog="" RD="" -for p in eosd eosiod; do +for p in eosd eosiod nodeos; do prog=$p RD=bin if [ -f $RD/$prog ]; then @@ -28,7 +28,7 @@ for p in eosd eosiod; do done if [ \( -z "$prog" \) -o \( -z "RD" \) ]; then - echo unable to locate binary for eosd or eosiod + echo unable to locate binary for eosd or eosiod or nodeos exit 1 fi diff --git a/scripts/eosio-tn_roll.sh b/scripts/eosio-tn_roll.sh index edc0f5f24fa748bd088a0831acc33236ef64d2e2..e93ba6b7da2761f147ab46a2f63e7010bdcd94be 100755 --- a/scripts/eosio-tn_roll.sh +++ b/scripts/eosio-tn_roll.sh @@ -37,7 +37,7 @@ fi prog="" RD="" -for p in eosd eosiod; do +for p in eosd eosiod nodeos; do prog=$p RD=bin if [ -f $RD/$prog ]; then @@ -53,7 +53,7 @@ for p in eosd eosiod; do done if [ \( -z "$prog" \) -o \( -z "$RD" \) ]; then - echo unable to locate binary for eosd or eosiod + echo unable to locate binary for eosd or eosiod or nodeos exit 1 fi diff --git a/scripts/eosio-tn_up.sh b/scripts/eosio-tn_up.sh index 8a81ed1211f57f4bbe3941c661f1eba7f7090212..848355f0366c0af54489de582ab2aafb30445bc3 100755 --- a/scripts/eosio-tn_up.sh +++ b/scripts/eosio-tn_up.sh @@ -39,7 +39,7 @@ fi prog="" RD="" -for p in eosd eosiod; do +for p in eosd eosiod nodeos; do prog=$p RD=bin if [ -f $RD/$prog ]; then @@ -55,7 +55,7 @@ for p in eosd eosiod; do done if [ \( -z "$prog" \) -o \( -z "$RD" \) ]; then - echo unable to locate binary for eosd or eosiod + echo unable to locate binary for eosd or eosiod or nodeos exit 1 fi diff --git a/scripts/eosio_build_amazon.sh b/scripts/eosio_build_amazon.sh index 6d020e1f75db83f31206a56477a19ee14d78dca7..a71b0367d0c95890ad6348c06e0617d3c092a8b7 100644 --- a/scripts/eosio_build_amazon.sh +++ b/scripts/eosio_build_amazon.sh @@ -5,18 +5,16 @@ CPU_SPEED=$( lscpu | grep "MHz" | tr -s ' ' | cut -d\ -f3 | cut -d'.' -f1 ) CPU_CORE=$( lscpu | grep "^CPU(s)" | tr -s ' ' | cut -d\ -f2 ) - DISK_INSTALL=`df -h . | tail -1 | tr -s ' ' | cut -d\ -f1` - DISK_TOTAL=`df -h . | tail -1 | tr -s ' ' | cut -d\ -f2 | sed 's/[^0-9\.]//g'` - DISK_AVAIL=`df -h . | tail -1 | tr -s ' ' | cut -d\ -f4 | sed 's/[^0-9\.]//g'` + DISK_TOTAL=`df -h / | grep /dev | tr -s ' ' | cut -d\ -f2 | sed 's/[^0-9]//'` + DISK_AVAIL=`df -h / | grep /dev | tr -s ' ' | cut -d\ -f4 | sed 's/[^0-9]//'` printf "\n\tOS name: $OS_NAME\n" printf "\tOS Version: ${OS_VER}\n" printf "\tCPU speed: ${CPU_SPEED}Mhz\n" printf "\tCPU cores: $CPU_CORE\n" printf "\tPhysical Memory: $MEM_MEG Mgb\n" - printf "\tDisk install: ${DISK_INSTALL}\n" - printf "\tDisk space total: ${DISK_TOTAL%.*}G\n" - printf "\tDisk space available: ${DISK_AVAIL%.*}G\n" + printf "\tDisk space total: ${DISK_TOTAL}G\n" + printf "\tDisk space available: ${DISK_AVAIL}G\n" if [ $MEM_MEG -lt 4000 ]; then printf "\tYour system must have 4 or more Gigabytes of physical memory installed.\n" @@ -30,7 +28,7 @@ exit 1 fi - if [ ${DISK_AVAIL%.*} -lt $DISK_MIN ]; then + if [ $DISK_AVAIL -lt $DISK_MIN ]; then printf "\tYou must have at least ${DISK_MIN}GB of available storage to install EOSIO.\n" printf "\texiting now.\n" exit 1 @@ -55,8 +53,7 @@ fi printf "\t${UPDATE}\n" -# DEP_ARRAY=(clang-4.0 lldb-4.0 libclang-4.0-dev cmake make libbz2-dev libssl-dev libgmp3-dev autotools-dev build-essential libicu-dev python-dev autoconf libtool) - DEP_ARRAY=( git gcc72.x86_64 gcc72-c++.x86_64 autoconf automake libtool make bzip2 bzip2-devel.x86_64 openssl-devel.x86_64 gmp.x86_64 gmp-devel.x86_64 libstdc++72.x86_64 python27-devel.x86_64 libedit-devel.x86_64 ncurses-devel.x86_64 swig.x86_64 ) + DEP_ARRAY=( git gcc72.x86_64 gcc72-c++.x86_64 autoconf automake libtool make bzip2 bzip2-devel.x86_64 openssl-devel.x86_64 gmp.x86_64 gmp-devel.x86_64 libstdc++72.x86_64 python36-devel.x86_64 libedit-devel.x86_64 ncurses-devel.x86_64 swig.x86_64 ) DCOUNT=0 COUNT=1 DISPLAY="" @@ -148,6 +145,106 @@ printf "\tBoost 1.66 found at ${HOME}/opt/boost_1_66_0\n" fi + printf "\n\tChecking for MongoDB installation.\n" + if [ ! -e ${MONGOD_CONF} ]; then + printf "\n\tInstalling MongoDB 3.6.3.\n" + cd ${HOME}/opt + curl -OL https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.3.tgz + if [ $? -ne 0 ]; then + printf "\tUnable to download MongoDB at this time.\n" + printf "\tExiting now.\n\n" + exit; + fi + tar xf mongodb-linux-x86_64-amazon-3.6.3.tgz + rm -f mongodb-linux-x86_64-amazon-3.6.3.tgz + ln -s mongodb-linux-x86_64-amazon-3.6.3/ mongodb + mkdir ${HOME}/opt/mongodb/data + mkdir ${HOME}/opt/mongodb/log + touch ${HOME}/opt/mongodb/log/mongodb.log + +tee > /dev/null ${MONGOD_CONF} </dev/null else printf "\tWASM found at ${HOME}/opt/wasm\n" - fi + fi \ No newline at end of file diff --git a/scripts/eosio_build_centos.sh b/scripts/eosio_build_centos.sh index c5488976c074457170f06f38afd0762ee5be3cf0..23855dd733fb7366a806852cf74f7b6e11c5400d 100644 --- a/scripts/eosio_build_centos.sh +++ b/scripts/eosio_build_centos.sh @@ -1,4 +1,5 @@ - OS_VER=$( cat /etc/os-release | grep VERSION_ID | cut -d'=' -f2 | sed 's/[^0-9\.]//gI' | cut -d'.' -f1 ) + OS_VER=$( cat /etc/os-release | grep VERSION_ID | cut -d'=' -f2 | sed 's/[^0-9\.]//gI' \ + | cut -d'.' -f1 ) MEM_MEG=$( free -m | grep Mem | tr -s ' ' | cut -d\ -f2 ) @@ -49,8 +50,8 @@ SCL=$( which scl 2>/dev/null ) if [ -z $SCL ]; then - printf "\n\tThe Centos Software Collections Repository and devtoolset-7 are required to install EOSIO.\n" - printf "\tDo you wish to install and enable this repository and devtoolset package?\n" + printf "\n\tThe Centos Software Collections Repository, devtoolset-7 and Python3 are required to install EOSIO.\n" + printf "\tDo you wish to install and enable this repository, devtoolset-7 and Python3 packages?\n" select yn in "Yes" "No"; do case $yn in [Yy]* ) @@ -72,6 +73,15 @@ else printf "\n\tCentos devtoolset installed successfully.\n" fi + printf "\n\n\tInstalling Python3.\n\n" + sudo yum install -y python33.x86_64 2>/dev/null + if [ $? -ne 0 ]; then + printf "\n\tCentos Python3 installation failed.\n" + printf "\n\tExiting now.\n" + exit 1 + else + printf "\n\tCentos Python3 installed successfully.\n" + fi break;; [Nn]* ) echo "User aborting installation of required Centos Software Collections Repository, Exiting now."; exit;; * ) echo "Please type 1 for yes or 2 for no.";; @@ -89,6 +99,15 @@ exit 1 fi printf "\n\tCentos devtoolset-7 successfully enabled.\n" + + printf "\n\tEnabling Centos python3 installation.\n" + source /opt/rh/python33/enable + if [ $? -ne 0 ]; then + printf "\n\tUnable to enable Centos python3 at this time.\n" + printf "\n\tExiting now.\n" + exit 1 + fi + printf "\n\tCentos python3 successfully enabled.\n" printf "\n\tUpdating YUM repository.\n" @@ -180,7 +199,6 @@ printf "\n\tChecking for boost libraries\n" if [ ! -d ${HOME}/opt/boost_1_66_0 ]; then - # install boost printf "\tInstalling boost libraries\n" cd ${TEMP_DIR} curl -L https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2 > boost_1.66.0.tar.bz2 @@ -194,8 +212,106 @@ printf "\tBoost 1.66 found at ${HOME}/opt/boost_1_66_0\n" fi + printf "\n\tChecking for MongoDB installation.\n" + if [ ! -e ${MONGOD_CONF} ]; then + printf "\n\tInstalling MongoDB 3.6.3.\n" + cd ${HOME}/opt + curl -OL https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.3.tgz + if [ $? -ne 0 ]; then + printf "\tUnable to download MongoDB at this time.\n" + printf "\tExiting now.\n\n" + exit; + fi + tar xf mongodb-linux-x86_64-amazon-3.6.3.tgz + rm -f mongodb-linux-x86_64-amazon-3.6.3.tgz + ln -s ${HOME}/opt/mongodb-linux-x86_64-amazon-3.6.3/ ${HOME}/opt/mongodb + mkdir ${HOME}/opt/mongodb/data + mkdir ${HOME}/opt/mongodb/log + touch ${HOME}/opt/mongodb/log/mongod.log + +tee > /dev/null ${MONGOD_CONF} </dev/null + printf "\tUnable to download MondgDB C driver at this time.\n" + printf "\tExiting now.\n\n" + exit; + fi + tar xf mongo-c-driver-1.9.3.tar.gz + rm -f ${TEMP_DIR}/mongo-c-driver-1.9.3.tar.gz + cd mongo-c-driver-1.9.3 + ./configure --enable-ssl=openssl --disable-automatic-init-and-cleanup --prefix=/usr/local + if [ $? -ne 0 ]; then + printf "\tConfiguring MondgDB C driver has encountered the errors above.\n" + printf "\tExiting now.\n\n" + exit; + fi + make -j${CPU_CORE} + if [ $? -ne 0 ]; then + printf "\tError compiling MondgDB C driver.\n" + printf "\tExiting now.\n\n" + exit; + fi + sudo make install + if [ $? -ne 0 ]; then + printf "\tError installing MondgDB C driver.\nMake sure you have sudo privileges.\n" + printf "\tExiting now.\n\n" + exit; + fi + cd .. + rm -rf ${TEMP_DIR}/mongo-c-driver-1.9.3 + cd ${TEMP_DIR} + git clone https://github.com/mongodb/mongo-cxx-driver.git --branch releases/stable --depth 1 + if [ $? -ne 0 ]; then + printf "\tUnable to clone MondgDB C++ driver at this time.\n" + printf "\tExiting now.\n\n" + exit; + fi + cd mongo-cxx-driver/build + ${CMAKE} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local .. + if [ $? -ne 0 ]; then + printf "\tCmake has encountered the above errors building the MongoDB C++ driver.\n" + printf "\tExiting now.\n\n" + exit; + fi + sudo make -j${CPU_CORE} + if [ $? -ne 0 ]; then + printf "\tError compiling MondgDB C++ driver.\n" + printf "\tExiting now.\n\n" + exit; + fi + sudo make install + if [ $? -ne 0 ]; then + printf "\tError installing MondgDB C++ driver.\nMake sure you have sudo privileges.\n" + printf "\tExiting now.\n\n" + exit; + fi + cd + sudo rm -rf ${TEMP_DIR}/mongo-cxx-driver + else + printf "\tMongo C++ driver found at /usr/local/lib/libmongocxx.so.\n" + fi printf "\n\tChecking for secp256k1-zkp\n" - # install secp256k1-zkp (Cryptonomex branch) if [ ! -e /usr/local/lib/libsecp256k1.a ]; then printf "\tInstalling secp256k1-zkp (Cryptonomex branch)\n" cd ${TEMP_DIR} @@ -222,7 +338,6 @@ printf "\n\tChecking for binaryen\n" if [ ! -d ${HOME}/opt/binaryen ]; then - # Install binaryen v1.37.14: printf "\tInstalling binaryen v1.37.14:\n" cd ${TEMP_DIR} git clone https://github.com/EOSIO/binaryen @@ -243,7 +358,6 @@ printf "\n\tChecking for LLVM with WASM support.\n" if [ ! -d ${HOME}/opt/wasm/bin ]; then - # Build LLVM and clang with EXPERIMENTAL WASM support: printf "\tInstalling LLVM & WASM\n" cd ${TEMP_DIR} mkdir llvm-compiler 2>/dev/null @@ -272,4 +386,4 @@ rm -rf ${TEMP_DIR}/llvm-compiler 2>/dev/null else printf "\tWASM found at ${HOME}/opt/wasm\n" - fi + fi \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ae562fe5a8e4144ca9622293f2f1625da589c66f..26a57528a2273e279cffcabd3105730318f0a1d2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,28 +21,14 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/config.hpp.in ${CMAKE_CURRENT_S file(GLOB UNIT_TESTS "chain_tests/*.cpp" "api_tests/*.cpp" "tests/abi_tests.cpp" "tests/database_tests.cpp" "tests/misc_tests.cpp" "wasm_tests/*.cpp" "tests/message_buffer_tests.cpp") add_executable( chain_test ${UNIT_TESTS} ${WASM_UNIT_TESTS} common/main.cpp) -target_link_libraries( chain_test eosio_testing eosio_chain chainbase eos_utilities eos_egenesis_none chain_plugin abi_generator fc ${PLATFORM_SPECIFIC_LIBS} ) +target_link_libraries( chain_test eosio_testing eosio_chain chainbase eos_utilities chain_plugin abi_generator fc ${PLATFORM_SPECIFIC_LIBS} ) + target_include_directories( chain_test PUBLIC ${CMAKE_BINARY_DIR}/contracts ${CMAKE_CURRENT_BINARY_DIR}/tests/contracts ) target_include_directories( chain_test PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/wasm_tests ) target_include_directories( chain_test PUBLIC ${CMAKE_SOURCE_DIR}/plugins/net_plugin/include ) add_dependencies(chain_test asserter test_api exchange currency proxy identity identity_test stltest infinite) - -# WASM only tests -#file(GLOB SLOW_TESTS "slow_tests/*.cpp") -#add_executable( slow_test ${SLOW_TESTS} ${COMMON_SOURCES} ) -#target_link_libraries( slow_test eos_native_contract eosio_chain chainbase eos_utilities eos_egenesis_none chain_plugin producer_plugin fc ${PLATFORM_SPECIFIC_LIBS} ) -#target_include_directories( slow_test PUBLIC ${CMAKE_BINARY_DIR}/contracts ) -#add_dependencies(slow_test currency exchange) -#add_subdirectory(api_tests/memory_test) -#add_subdirectory(api_tests/extended_memory_test) -#add_subdirectory(api_tests/table_abi_test) -#file(GLOB API_TESTS "api_tests/*.cpp") -#add_executable( api_test ${API_TESTS} ${COMMON_SOURCES} ) -#target_link_libraries( api_test eos_native_contract eosio_chain chainbase eos_utilities eos_egenesis_none chain_plugin producer_plugin fc ${PLATFORM_SPECIFIC_LIBS} ) -#target_include_directories( api_test PUBLIC ${CMAKE_BINARY_DIR}/contracts ${CMAKE_SOURCE_DIR}/contracts ${CMAKE_CURRENT_BINARY_DIR}/api_tests ) -#add_dependencies(api_test test_api memory_test extended_memory_test table_abi_test) # configure_file(${CMAKE_CURRENT_SOURCE_DIR}/p2p_tests/sync/test.sh ${CMAKE_CURRENT_BINARY_DIR}/p2p_tests/sync/test.sh COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/p2p_tests/dawn_515/test.sh ${CMAKE_CURRENT_BINARY_DIR}/p2p_tests/dawn_515/test.sh COPYONLY) @@ -52,16 +38,18 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/distributed-transactions-remote-test. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sample-cluster-map.json ${CMAKE_CURRENT_BINARY_DIR}/sample-cluster-map.json COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/restart-scenarios-test.py ${CMAKE_CURRENT_BINARY_DIR}/restart-scenarios-test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/testUtils.py ${CMAKE_CURRENT_BINARY_DIR}/testUtils.py COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/eosiod_run_test.py ${CMAKE_CURRENT_BINARY_DIR}/eosiod_run_test.py COPYONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/eosiod_run_remote_test.py ${CMAKE_CURRENT_BINARY_DIR}/eosiod_run_remote_test.py COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nodeos_run_test.py ${CMAKE_CURRENT_BINARY_DIR}/nodeos_run_test.py COPYONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nodeos_run_remote_test.py ${CMAKE_CURRENT_BINARY_DIR}/nodeos_run_remote_test.py COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/consensus-validation-malicious-producers.py ${CMAKE_CURRENT_BINARY_DIR}/consensus-validation-malicious-producers.py COPYONLY) -add_test(chain_test chain_test --report_level=detailed) -add_test(NAME eosiod_run_test COMMAND tests/eosiod_run_test.py -v --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -add_test(NAME eosiod_run_remote_test COMMAND tests/eosiod_run_remote_test.py --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +#Manually run chain_test for all supported runtimes +add_test(NAME chain_test_binaryen COMMAND chain_test --report_level=detailed -- --binaryen) +add_test(NAME chain_test_wavm COMMAND chain_test --report_level=detailed -- --wavm) +add_test(NAME nodeos_run_test COMMAND tests/nodeos_run_test.py -v --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) +add_test(NAME nodeos_run_remote_test COMMAND tests/nodeos_run_remote_test.py --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) add_test(NAME p2p_dawn515_test COMMAND tests/p2p_tests/dawn_515/test.sh WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) if(BUILD_MONGO_DB_PLUGIN) - add_test(NAME eosiod_run_test-mongodb COMMAND tests/eosiod_run_test.py --mongodb --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + add_test(NAME nodeos_run_test-mongodb COMMAND tests/nodeos_run_test.py --mongodb --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() # TODO: Tests removed until working again on master. diff --git a/tests/api_tests/api_tests.cpp b/tests/api_tests/api_tests.cpp index 2bdc607fe45d3d0e756772002492debabc6e47ab..c666c0135ff8650e561a918dac7441f97dac410f 100644 --- a/tests/api_tests/api_tests.cpp +++ b/tests/api_tests/api_tests.cpp @@ -166,6 +166,14 @@ void CallFunction(tester& test, T ac, const vector& data, const vector{}, DATA) #define CALL_TEST_FUNCTION_SYSTEM(TESTER, CLS, MTH, DATA) CallFunction(TESTER, test_chain_action{}, DATA, {N(eosio)} ) #define CALL_TEST_FUNCTION_SCOPE(TESTER, CLS, MTH, DATA, ACCOUNT) CallFunction(TESTER, test_api_action{}, DATA, ACCOUNT) +#define CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION(TESTER, CLS, MTH, DATA, EXC, EXC_MESSAGE) \ +BOOST_CHECK_EXCEPTION( \ + CALL_TEST_FUNCTION( TESTER, CLS, MTH, DATA), \ + EXC, \ + [](const EXC& e) { \ + return expect_assert_message(e, EXC_MESSAGE); \ + } \ +); bool is_access_violation(fc::unhandled_exception const & e) { try { @@ -741,37 +749,14 @@ BOOST_FIXTURE_TEST_CASE(db_tests, tester) { try { set_code( N(testapi), test_api_db_wast ); produce_blocks(1); - CALL_TEST_FUNCTION( *this, "test_db", "key_str_general", {}); CALL_TEST_FUNCTION( *this, "test_db", "primary_i64_general", {}); CALL_TEST_FUNCTION( *this, "test_db", "primary_i64_lowerbound", {}); CALL_TEST_FUNCTION( *this, "test_db", "primary_i64_upperbound", {}); CALL_TEST_FUNCTION( *this, "test_db", "idx64_general", {}); CALL_TEST_FUNCTION( *this, "test_db", "idx64_lowerbound", {}); CALL_TEST_FUNCTION( *this, "test_db", "idx64_upperbound", {}); - /* - CALL_TEST_FUNCTION( *this, "test_db", "key_i64_general", {}); - CALL_TEST_FUNCTION( *this, "test_db", "key_i64_remove_all", {}); - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_db", "key_i64_small_load", {}), fc::assert_exception, - [](const fc::assert_exception& e) { - return expect_assert_message(e, "Data is not long enough to contain keys"); - } - ); - - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_db", "key_i64_small_store", {}), fc::assert_exception, - [](const fc::assert_exception& e) { - return expect_assert_message(e, "Data is not long enough to contain keys"); - } - ); - - CALL_TEST_FUNCTION( *this, "test_db", "key_i64_store_scope", {}); - CALL_TEST_FUNCTION( *this, "test_db", "key_i64_remove_scope", {}); - CALL_TEST_FUNCTION( *this, "test_db", "key_i64_not_found", {}); - CALL_TEST_FUNCTION( *this, "test_db", "key_i64_front_back", {}); - //CALL_TEST_FUNCTION( *this, "test_db", "key_i64i64i64_general", {}); - CALL_TEST_FUNCTION( *this, "test_db", "key_i128i128_general", {}); - */ + } FC_LOG_AND_RETHROW() } - /************************************************************************************* * multi_index_tests test case *************************************************************************************/ @@ -793,6 +778,37 @@ BOOST_FIXTURE_TEST_CASE(multi_index_tests, tester) { try { CALL_TEST_FUNCTION( *this, "test_multi_index", "idx128_autoincrement_test_part2", {}); CALL_TEST_FUNCTION( *this, "test_multi_index", "idx256_general", {}); CALL_TEST_FUNCTION( *this, "test_multi_index", "idx_double_general", {}); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pk_iterator_exceed_end", {}, + fc::assert_exception, "cannot increment end iterator"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_sk_iterator_exceed_end", {}, + fc::assert_exception, "cannot increment end iterator"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pk_iterator_exceed_begin", {}, + fc::assert_exception, "cannot decrement iterator at beginning of table"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_sk_iterator_exceed_begin", {}, + fc::assert_exception, "cannot decrement iterator at beginning of index"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_pk_ref_to_other_table", {}, + fc::assert_exception, "object passed to iterator_to is not in multi_index"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_sk_ref_to_other_table", {}, + fc::assert_exception, "object passed to iterator_to is not in multi_index"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_pk_end_itr_to_iterator_to", {}, + fc::assert_exception, "object passed to iterator_to is not in multi_index"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_pk_end_itr_to_modify", {}, + fc::assert_exception, "cannot pass end iterator to modify"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_pk_end_itr_to_erase", {}, + fc::assert_exception, "cannot pass end iterator to erase"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_sk_end_itr_to_iterator_to", {}, + fc::assert_exception, "object passed to iterator_to is not in multi_index"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_sk_end_itr_to_modify", {}, + fc::assert_exception, "cannot pass end iterator to modify"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_sk_end_itr_to_erase", {}, + fc::assert_exception, "cannot pass end iterator to erase"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_modify_primary_key", {}, + fc::assert_exception, "updater cannot change primary key when modifying an object"); + CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_run_out_of_avl_pk", {}, + fc::assert_exception, "next primary key in table is at autoincrement limit"); + CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_sk_cache_pk_lookup", {}); + CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_pk_cache_sk_lookup", {}); + } FC_LOG_AND_RETHROW() } /************************************************************************************* @@ -999,8 +1015,7 @@ BOOST_FIXTURE_TEST_CASE(extended_memory_test_page_memory_negative_bytes, tester) produce_blocks(1000); set_code(N(testapi), test_api_mem_wast); produce_blocks(1000); - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_extended_memory", "test_page_memory_negative_bytes", {} ), - page_memory_error, is_page_memory_error); + CALL_TEST_FUNCTION( *this, "test_extended_memory", "test_page_memory_negative_bytes", {} ); } FC_LOG_AND_RETHROW() } diff --git a/tests/api_tests/table_abi_test/CMakeLists.txt b/tests/api_tests/table_abi_test/CMakeLists.txt deleted file mode 100644 index 11b0e68b91f23ad915438db08839fe8a2cdcddee..0000000000000000000000000000000000000000 --- a/tests/api_tests/table_abi_test/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -file(GLOB SOURCE_FILES "*.cpp") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) -add_wast_target(table_abi_test "${CMAKE_SOURCE_DIR}/contracts" ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/tests/api_tests/table_abi_test/table_abi_test.abi b/tests/api_tests/table_abi_test/table_abi_test.abi deleted file mode 100644 index 35368d36577766f72244fcbc4f3380907a1fbf03..0000000000000000000000000000000000000000 --- a/tests/api_tests/table_abi_test/table_abi_test.abi +++ /dev/null @@ -1,109 +0,0 @@ -{ - "types": [], - "structs": [ - { - "name": "table1", - "fields": { - "key1": "uint64", - "value1": "uint128", - "value2": "int64" - } - }, - { - "name": "table2", - "fields": { - "key1": "uint128", - "key2": "uint128", - "value1": "uint64", - "value2": "int64" - } - }, - { - "name": "table3", - "fields": { - "key1": "uint64", - "key2": "uint64", - "key3": "uint64", - "value1": "uint128", - "value2": "int64" - } - }, - { - "name": "strkey", - "fields": { - "key": "string", - "value": "string" - } - } - ], - "actions": [ - { - "action_name": "storei", - "type": "table1" - }, - { - "action_name": "storestr", - "type": "strkey" - }, - { - "action_name": "storeii", - "type": "table2" - }, - { - "action_name": "storeiii", - "type": "table3" - } - ], - "tables": [ - { - "table_name": "table1", - "type": "table1", - "index_type": "i64", - "key_names": [ - "key1" - ], - "key_types": [ - "uint64" - ] - }, - { - "table_name": "table2", - "type": "table2", - "index_type": "i128i128", - "key_names": [ - "key1", - "key2" - ], - "key_types": [ - "uint128", - "uint128" - ] - }, - { - "table_name": "table3", - "type": "table3", - "index_type": "i64i64i64", - "key_names": [ - "key1", - "key2", - "key3" - ], - "key_types": [ - "uint64", - "int64", - "uint64" - ] - }, - { - "table_name": "strkey", - "type": "strkey", - "index_type": "str", - "key_names": [ - "key" - ], - "key_types": [ - "string" - ] - } - ] -} \ No newline at end of file diff --git a/tests/api_tests/table_abi_test/table_abi_test.cpp b/tests/api_tests/table_abi_test/table_abi_test.cpp deleted file mode 100644 index 2bb016558415ffdba2fe35ba7c4377cc6764a97a..0000000000000000000000000000000000000000 --- a/tests/api_tests/table_abi_test/table_abi_test.cpp +++ /dev/null @@ -1,222 +0,0 @@ -#include "table_abi_test.hpp" - -extern "C" { - void init() { - - } - - table1 get_table1() - { - // avoiding literal not being large enough to hold 128 bit uint - uint128_t i128_tmp = 0xffffffffffffffff; - i128_tmp += (uint128_t)(0xf); - return table1 { 64, i128_tmp, -63 }; - } - - table2 get_table2() - { - // avoiding literal not being large enough to hold 128 bit uint - uint128_t i128_tmp = 0xffffffffffffffff; - i128_tmp += (uint128_t)(0xf0); - return table2 { i128_tmp, ++i128_tmp, 98, -63 }; - } - - table3 get_table3() - { - // avoiding literal not being large enough to hold 128 bit uint - uint128_t i128_tmp = 0xffffffffffffffff; - i128_tmp += (uint128_t)(0xf00); - return table3 { 64, -65, 66, i128_tmp, -63 }; - } - - struct string_table - { - char str[8] = "key str"; - char tmp[11] = "stored str"; - }; - - string_table get_string_table() - { - return string_table(); - } - - void store_valid_i64(uint64_t code) - { - table1 tmp = get_table1(); - uint32_t err = store_i64( code, N(table1), &tmp, sizeof(tmp) ); - assert(err == 1, "should have successfully stored i64"); - - table1 tmp2; - tmp2.key = tmp.key; - err = load_i64( code, code, N(table1), &tmp2, sizeof(tmp2) ); - assert(err == sizeof(tmp2), "should have successfully loaded i64"); - assert(tmp.key == tmp2.key, "should have retrieved same key"); - assert(tmp.value1 == tmp2.value1, "should have retrieved same value1"); - assert(tmp.value2 == tmp2.value2, "should have retrieved same value2"); - } - - void store_valid_i128i128(uint64_t code) - { - table2 tmp = get_table2(); - uint32_t err = store_i128i128( code, N(table2), &tmp, sizeof(tmp) ); - assert(err == 1, "should have successfully stored i128i128"); - - table2 tmp2; - tmp2.key1 = tmp.key1; - tmp2.key2 = tmp.key2; - err = load_primary_i128i128( code, code, N(table2), &tmp2, sizeof(tmp2) ); - assert(err == sizeof(tmp2), "should have successfully loaded i128i128"); - assert(tmp.key1 == tmp2.key1, "should have retrieved same key1"); - assert(tmp.key2 == tmp2.key2, "should have retrieved same key2"); - assert(tmp.value1 == tmp2.value1, "should have retrieved same value1"); - assert(tmp.value2 == tmp2.value2, "should have retrieved same value2"); - } - - void store_valid_i64i64i64(uint64_t code) - { - table3 tmp = get_table3(); - uint32_t err = store_i64i64i64( code, N(table3), &tmp, sizeof(tmp) ); - assert(err == 1, "should have successfully stored i64i64i64"); - - table3 tmp2; - tmp2.key1 = tmp.key1; - tmp2.key2 = tmp.key2; - tmp2.key3 = tmp.key3; - err = load_primary_i64i64i64( code, code, N(table3), &tmp2, sizeof(tmp2) ); - assert(err == sizeof(tmp2), "should have successfully loaded i64i64i64"); - assert(tmp.key1 == tmp2.key1, "should have retrieved same key1"); - assert(tmp.key2 == tmp2.key2, "should have retrieved same key2"); - assert(tmp.key3 == tmp2.key3, "should have retrieved same key3"); - assert(tmp.value1 == tmp2.value1, "should have retrieved same value1"); - assert(tmp.value2 == tmp2.value2, "should have retrieved same value2"); - } - - void store_valid_str(uint64_t code) - { - string_table st = get_string_table(); - uint32_t err = store_str( code, N(strkey), st.str, sizeof(st.str), st.tmp, sizeof(st.tmp)); - assert(err == 1, "should have successfully stored str"); - - char tmp[11] = {}; - err = load_str( code, code, N(strkey), st.str, sizeof(st.str), tmp, sizeof(tmp)); - for (uint32_t i = 0; i < 11; ++i) - assert(st.tmp[i] == tmp[i], "should have loaded the same string that was stored"); - } - - void store_i64_table_as_str(uint64_t code) - { - char str[] = "key str"; - table1 tmp = get_table1(); - store_str( code, N(table1), str, sizeof(str), (char*)&tmp, sizeof(tmp)); - } - - void store_i128i128_table_as_i64(uint64_t code) - { - table2 tmp = get_table2(); - store_i64( code, N(table2), &tmp, sizeof(tmp) ); - } - - void store_i64i64i64_table_as_i128i128(uint64_t code) - { - table3 tmp = get_table3(); - store_i128i128( code, N(table3), &tmp, sizeof(tmp) ); - } - - void store_str_table_as_i64i64i64(uint64_t code) - { - table3 tmp = get_table3(); - store_i64i64i64( code, N(strkey), &tmp, sizeof(tmp) ); - } - - void load_i64_table_as_str(uint64_t code) - { - char str[] = "key str"; - table1 tmp = get_table1(); - load_str( code, code, N(table1), str, sizeof(str), (char*)&tmp, sizeof(tmp)); - } - - void load_i128i128_table_as_i64(uint64_t code) - { - table2 tmp = get_table2(); - load_i64( code, code, N(table2), &tmp, sizeof(tmp) ); - } - - void load_i64i64i64_table_as_i128i128(uint64_t code) - { - table3 tmp = get_table3(); - load_primary_i128i128( code, code, N(table3), &tmp, sizeof(tmp) ); - } - - void load_str_table_as_i64i64i64(uint64_t code) - { - table3 tmp = get_table3(); - load_primary_i64i64i64( code, code, N(strkey), &tmp, sizeof(tmp) ); - } - - void apply( uint64_t code, uint64_t action ) { - if( code == N(storei) ) { - if( action == N(transfer) ) { - store_valid_i64(code); - return; - } - } else if( code == N(storeii) ) { - if( action == N(transfer) ) { - store_valid_i128i128(code); - return; - } - } else if( code == N(storeiii) ) { - if( action == N(transfer) ) { - store_valid_i64i64i64(code); - return; - } - } else if( code == N(storestr) ) { - if( action == N(transfer) ) { - store_valid_str(code); - return; - } - } else if( code == N(strnoti) ) { - if( action == N(transfer) ) { - store_i64_table_as_str(code); - return; - } - } else if( code == N(inotii) ) { - if( action == N(transfer) ) { - store_i128i128_table_as_i64(code); - return; - } - } else if( code == N(iinotiii) ) { - if( action == N(transfer) ) { - store_i64i64i64_table_as_i128i128(code); - return; - } - } else if( code == N(iiinotstr) ) { - if( action == N(transfer) ) { - store_str_table_as_i64i64i64(code); - return; - } - } else if( code == N(ldstrnoti) ) { - if( action == N(transfer) ) { - load_i64_table_as_str(code); - return; - } - } else if( code == N(ldinotii) ) { - if( action == N(transfer) ) { - load_i128i128_table_as_i64(code); - return; - } - } else if( code == N(ldiinotiii) ) { - if( action == N(transfer) ) { - load_i64i64i64_table_as_i128i128(code); - return; - } - } else if( code == N(ldiiinotstr) ) { - if( action == N(transfer) ) { - load_str_table_as_i64i64i64(code); - return; - } - } - - eosio::print("don't know code=", code, " action=", action, " \n"); - assert(0, "unknown code"); - } -} diff --git a/tests/api_tests/table_abi_test/table_abi_test.hpp b/tests/api_tests/table_abi_test/table_abi_test.hpp deleted file mode 100644 index 46b5397de1c7a6a044a795799ec6fef3842e832a..0000000000000000000000000000000000000000 --- a/tests/api_tests/table_abi_test/table_abi_test.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -struct PACKED(table1) { - uint64_t key; - uint128_t value1; - int64_t value2; -}; - -struct PACKED(table2) { - uint128_t key1; - uint128_t key2; - uint64_t value1; - int64_t value2; -}; - -struct PACKED(table3) { - uint64_t key1; - int64_t key2; - uint64_t key3; - uint128_t value1; - int64_t value2; -}; diff --git a/tests/chain_tests/limits_tests.cpp b/tests/chain_tests/limits_tests.cpp deleted file mode 100644 index 1b3f34ca787231c7e21be5f724957ba9716b21c5..0000000000000000000000000000000000000000 --- a/tests/chain_tests/limits_tests.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include -#include - -using namespace eosio; -using namespace eosio::chain; -using namespace eosio::chain::contracts; -using namespace eosio::testing; - -BOOST_AUTO_TEST_SUITE(limits_tests) - -BOOST_AUTO_TEST_CASE(infinite_loop) { -#if 0 - try { - // set up runtime limits - tester t({fc::milliseconds(1), fc::milliseconds(1)}); - t.produce_block(); - - t.create_account(N(infinite)); - t.set_code(N(infinite), infinite_wast); - - { - action act; - act.account = N(infinite); - act.name = N(op); - act.authorization = vector{{N(infinite), config::active_name}}; - - signed_transaction trx; - trx.actions.emplace_back(std::move(act)); - - t.set_tapos(trx); - trx.sign(t.get_private_key(N(infinite), "active"), chain_id_type()); - - BOOST_REQUIRE_THROW(t.push_transaction(trx), checktime_exceeded); - } - } FC_LOG_AND_RETHROW(); -#endif -} - -BOOST_AUTO_TEST_SUITE_END() diff --git a/tests/chain_tests/producer_schedule_tests.cpp b/tests/chain_tests/producer_schedule_tests.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f8039e881ffa6a5d515f10335a6ccff551eb9081 --- /dev/null +++ b/tests/chain_tests/producer_schedule_tests.cpp @@ -0,0 +1,138 @@ +#include +#include +#include +#include +#include +using namespace eosio::testing; +using namespace eosio::chain; +using mvo = fc::mutable_variant_object; + +BOOST_AUTO_TEST_SUITE(producer_schedule_tests) + + BOOST_FIXTURE_TEST_CASE( verify_producer_schedule, tester ) try { + + // --- Define some utility functions ----- + + using block_num_and_schd_tuple = std::tuple; + + // Utility function to send setprods action + uint32_t version = 1; + const auto& set_producers = [&](const vector& producers) -> block_num_and_schd_tuple { + // Construct producer schedule object + producer_schedule_type schedule; + schedule.version = version++; + for (auto& producer_name: producers) { + producer_key pk = { producer_name, get_public_key( producer_name, "active" )}; + schedule.producers.emplace_back(pk); + } + + // Send setprods action + vector producer_keys; + for (auto& producer: schedule.producers) { + producer_keys.emplace_back( mvo()("producer_name", producer.producer_name)("signing_key", producer.block_signing_key)); + } + push_action(N(eosio), N(setprods), N(eosio), mvo()("version", schedule.version)("producers", producer_keys)); + + // Calculate effective block num, which is the start of the next round + auto eff_block_num = control->get_dynamic_global_properties().head_block_number + 1; + const auto blocks_per_round = control->get_global_properties().active_producers.producers.size() * config::producer_repetitions; + while((eff_block_num % blocks_per_round) != 0) { + eff_block_num++; + } + + // Return the effective block num and new schedule + return block_num_and_schd_tuple{ eff_block_num, schedule }; + }; + + // Utility function to calculate expected producer + const auto& get_expected_producer = [&](const producer_schedule_type& schedule, const uint64_t slot) -> account_name { + const auto& index = (slot % (schedule.producers.size() * config::producer_repetitions)) / config::producer_repetitions; + return schedule.producers.at(index).producer_name; + }; + + // Utility function to check if two schedule is equal + const auto& is_schedule_equal = [&](const producer_schedule_type& first, const producer_schedule_type& second) -> bool { + bool is_equal = first.producers.size() == second.producers.size(); + for (uint32_t i = 0; i < first.producers.size(); i++) { + is_equal = is_equal && first.producers.at(i) == second.producers.at(i); + } + return is_equal; + }; + + // Utility function to ensure that producer schedule work as expected + const auto& confirm_schedule_correctness = [&](const block_num_and_schd_tuple& new_eff_block_num_and_schd_tuple) { + const uint32_t check_duration = 1000; // number of blocks + for (uint32_t i = 0; i < check_duration; ++i) { + const producer_schedule_type current_schedule = control->get_global_properties().active_producers; + const auto& current_absolute_slot = control->get_dynamic_global_properties().current_absolute_slot ; + // Determine expected producer + const auto& expected_producer = get_expected_producer(current_schedule, current_absolute_slot + 1); + + // Ensure that we have the correct schedule at the right time + // The new schedule will only be used once the effective block num is deemed irreversible + const auto& new_schd_eff_block_num = std::get<0>(new_eff_block_num_and_schd_tuple); + const auto& new_schedule = std::get<1>(new_eff_block_num_and_schd_tuple); + if (control->last_irreversible_block_num() > new_schd_eff_block_num) { + BOOST_TEST(is_schedule_equal(new_schedule, current_schedule)); + } else { + BOOST_TEST(!is_schedule_equal(new_schedule, current_schedule)); + } + + // Produce block + produce_block(); + + // Check if the producer is the same as what we expect + BOOST_TEST(control->head_block_producer() == expected_producer); + } + }; + + // ---- End of utility function definitions ---- + + // Create producer accounts + vector producers = { + "inita", "initb", "initc", "initd", "inite", "initf", "initg", + "inith", "initi", "initj", "initk", "initl", "initm", "initn", + "inito", "initp", "initq", "initr", "inits", "initt", "initu" + }; + create_accounts(producers); + + // ---- Test first set of producers ---- + vector first_set_of_producer = { + producers[0], producers[1], producers[2], producers[3], producers[4], producers[5], producers[6], + producers[7], producers[8], producers[9], producers[10], producers[11], producers[12], producers[13], + producers[14], producers[15], producers[16], producers[17], producers[18], producers[19], producers[20] + }; + // Send set prods action and confirm schedule correctness + const auto& first_eff_block_num_and_schd_tuple = set_producers(first_set_of_producer); + confirm_schedule_correctness(first_eff_block_num_and_schd_tuple); + + // ---- Test second set of producers ---- + vector second_set_producer_order = { + producers[3], producers[6], producers[9], producers[12], producers[15], producers[18], producers[20] + }; + // Send set prods action and confirm schedule correctness + const auto& second_eff_block_num_and_schd_tuple = set_producers(second_set_producer_order); + confirm_schedule_correctness(second_eff_block_num_and_schd_tuple); + + + // ---- Test deliberately miss some blocks ---- + const int64_t num_of_missed_blocks = 5000; + produce_block(fc::microseconds(500 * 1000 * num_of_missed_blocks)); + // Ensure schedule is still correct + confirm_schedule_correctness(second_eff_block_num_and_schd_tuple); + produce_block(); + + + // ---- Test third set of producers ---- + vector third_set_producer_order = { + producers[2], producers[5], producers[8], producers[11], producers[14], producers[17], producers[20], + producers[0], producers[3], producers[6], producers[9], producers[12], producers[15], producers[18], + producers[1], producers[4], producers[7], producers[10], producers[13], producers[16], producers[19] + }; + // Send set prods action and confirm schedule correctness + const auto& third_eff_block_num_and_schd_tuple = set_producers(third_set_producer_order); + confirm_schedule_correctness(third_eff_block_num_and_schd_tuple); + + } FC_LOG_AND_RETHROW() + +BOOST_AUTO_TEST_SUITE_END() diff --git a/tests/impaired_network.py b/tests/impaired_network.py new file mode 100644 index 0000000000000000000000000000000000000000..9eff41b67232fe98fc9731eee21aaaa082ba6d7a --- /dev/null +++ b/tests/impaired_network.py @@ -0,0 +1,32 @@ +import testUtils +import p2p_test_peers +import random + +RemoteCmd = p2p_test_peers.P2PTestPeers + +class ImpairedNetwork: + cmd="tc qdisc add dev {dev} root tbf limit 65536 burst 65536 rate" + args=["1mbps","500kbps","100kbps","10kbps","1kbps"] #,"1bps"] + + resetcmd="tc qdisc del dev {dev} root" + + def maxIndex(self): + return len(self.args) + + def execute(self, cmdInd, node, testerAccount, eosio): + print("\n==== impaired network test: set network speed to %s ====" % (self.args[cmdInd])) + RemoteCmd.exec(self.cmd + " " + self.args[cmdInd]) + s="" + for i in range(12): + s=s+random.choice("abcdefghijklmnopqrstuvwxyz12345") + testerAccount.name = s + transIdlist = [] + print("==== creating account %s ====" % (s)) + trans = node.createAccount(testerAccount, eosio, stakedDeposit=0, waitForTransBlock=True) + if trans is None: + return ([], "", 0.0, "failed to create account") + transIdlist.append(node.getTransId(trans)) + return (transIdlist, "", 0.0, "") + + def on_exit(self): + RemoteCmd.exec(self.resetcmd) diff --git a/tests/lossy_network.py b/tests/lossy_network.py new file mode 100644 index 0000000000000000000000000000000000000000..a8211f8d57f6832f4a1014c1eec47cf9a70ce9d6 --- /dev/null +++ b/tests/lossy_network.py @@ -0,0 +1,32 @@ +import testUtils +import p2p_test_peers +import random + +RemoteCmd = p2p_test_peers.P2PTestPeers + +class LossyNetwork: + cmd="tc qdisc add dev {dev} root netem loss" + args=["0%", "1%", "10%", "50%", "90%", "99%"] + + resetcmd="tc qdisc del dev {dev} root" + + def maxIndex(self): + return len(self.args) + + def execute(self, cmdInd, node, testerAccount, eosio): + print("\n==== lossy network test: set loss ratio to %s ====" % (self.args[cmdInd])) + RemoteCmd.exec(self.cmd + " " + self.args[cmdInd]) + s="" + for i in range(12): + s=s+random.choice("abcdefghijklmnopqrstuvwxyz12345") + testerAccount.name = s + transIdlist = [] + print("==== creating account %s ====" % (s)) + trans = node.createAccount(testerAccount, eosio, stakedDeposit=0, waitForTransBlock=True) + if trans is None: + return ([], "", 0.0, "failed to create account") + transIdlist.append(node.getTransId(trans)) + return (transIdlist, "", 0.0, "") + + def on_exit(self): + RemoteCmd.exec(self.resetcmd) diff --git a/tests/eosiod_run_remote_test.py b/tests/nodeos_run_remote_test.py similarity index 95% rename from tests/eosiod_run_remote_test.py rename to tests/nodeos_run_remote_test.py index b5825bf294ef708e2a4589802ed734bd66613001..71c3c177a15b9a280fd36c4603d370a2fc7f874e 100755 --- a/tests/eosiod_run_remote_test.py +++ b/tests/nodeos_run_remote_test.py @@ -30,7 +30,7 @@ topo="mesh" delay=1 pnodes=1 total_nodes=pnodes -actualTest="tests/eosiod_run_test.py" +actualTest="tests/nodeos_run_test.py" if not amINoon: actualTest="tests/eosd_run_test.py" testSuccessful=False @@ -56,7 +56,7 @@ try: errorExit("Cluster never stabilized") cmd="%s --dont-launch %s %s" % (actualTest, "-v" if debug else "", "" if amINoon else "--not-noon") - Print("Starting up %s test: %s" % ("eosiod" if amINoon else "eosd", actualTest)) + Print("Starting up %s test: %s" % ("nodeos" if amINoon else "eosd", actualTest)) Print("cmd: %s\n" % (cmd)) if 0 != subprocess.call(cmd, shell=True): errorExit("failed to run cmd.") diff --git a/tests/eosiod_run_test.py b/tests/nodeos_run_test.py similarity index 98% rename from tests/eosiod_run_test.py rename to tests/nodeos_run_test.py index 604677f3a62efdfbece8b2d4eb5b00fd8ec20ffb..77e0c9f85a76149828561729f08098a6e2964e13 100755 --- a/tests/eosiod_run_test.py +++ b/tests/nodeos_run_test.py @@ -8,7 +8,7 @@ import random import re ############################################################### -# eosiod_run_test +# nodeos_run_test # --dump-error-details # --keep-logs ############################################################### @@ -81,7 +81,7 @@ ClientName="eosc" if amINoon: WalletdName="eosio-walletd" - ClientName="eosioc" + ClientName="cleos" # noon branch requires longer mongo sync time. testUtils.Utils.setMongoSyncTime(50) else: @@ -446,7 +446,7 @@ try: opts="--permission currency@active" trans=node.pushMessage(contract, action, data, opts) - # TODO need to update eosio.system contract to use new currency and update eosioc and chain_plugin for interaction + # TODO need to update eosio.system contract to use new currency and update cleos and chain_plugin for interaction # Print("Verify currency contract has proper initial balance (via get table)") # contract="currency" # table="accounts" @@ -500,7 +500,7 @@ try: cmdError("%s get transaction trans_id" % (ClientName)) errorExit("Failed to verify push message transaction id.") - # TODO need to update eosio.system contract to use new currency and update eosioc and chain_plugin for interaction + # TODO need to update eosio.system contract to use new currency and update cleos and chain_plugin for interaction # Print("read current contract balance") # contract="currency" # table="accounts" @@ -581,8 +581,8 @@ try: # TODO: Approving producers currently not supported # approve producer - # INFO="$(programs/eosioc/eosioc --host $SERVER --port $PORT --wallet-port 8899 set producer inita testera approve)" - # verifyErrorCode "eosioc approve producer" + # INFO="$(programs/cleos/cleos --host $SERVER --port $PORT --wallet-port 8899 set producer inita testera approve)" + # verifyErrorCode "cleos approve producer" Print("Get account inita") account=node.getEosAccount(initaAccount.name) @@ -592,8 +592,8 @@ try: # TODO: Unapproving producers currently not supported # unapprove producer - # INFO="$(programs/eosioc/eosioc --host $SERVER --port $PORT --wallet-port 8899 set producer inita testera unapprove)" - # verifyErrorCode "eosioc unapprove producer" + # INFO="$(programs/cleos/cleos --host $SERVER --port $PORT --wallet-port 8899 set producer inita testera unapprove)" + # verifyErrorCode "cleos unapprove producer" # # Proxy diff --git a/tests/p2p_network_test.py b/tests/p2p_network_test.py new file mode 100755 index 0000000000000000000000000000000000000000..c8d72e931dde9dba799ac5acfc240311585c9aa6 --- /dev/null +++ b/tests/p2p_network_test.py @@ -0,0 +1,204 @@ +#!/usr/bin/env python3 + +import testUtils +import p2p_test_peers +import impaired_network +import lossy_network +import p2p_stress + +import copy +import decimal +import argparse +import random +import re +import time + +Remote = p2p_test_peers.P2PTestPeers + +hosts=Remote.hosts +ports=Remote.ports + +TEST_OUTPUT_DEFAULT="p2p_network_test_log.txt" +DEFAULT_HOST=hosts[0] +DEFAULT_PORT=ports[0] + +parser = argparse.ArgumentParser(add_help=False) +Print=testUtils.Utils.Print +errorExit=testUtils.Utils.errorExit + +# Override default help argument so that only --help (and not -h) can call help +parser.add_argument('-?', action='help', default=argparse.SUPPRESS, + help=argparse._('show this help message and exit')) +parser.add_argument("-o", "--output", type=str, help="output file", default=TEST_OUTPUT_DEFAULT) +parser.add_argument("--inita_prvt_key", type=str, help="Inita private key.", + default=testUtils.Cluster.initaAccount.ownerPrivateKey) +parser.add_argument("--initb_prvt_key", type=str, help="Initb private key.", + default=testUtils.Cluster.initbAccount.ownerPrivateKey) +parser.add_argument("--wallet_host", type=str, help="wallet host", default="localhost") +parser.add_argument("--wallet_port", type=int, help="wallet port", default=8899) +parser.add_argument("--impaired_network", help="test impaired network", action='store_true') +parser.add_argument("--lossy_network", help="test lossy network", action='store_true') +parser.add_argument("--stress_network", help="test load/stress network", action='store_true') +parser.add_argument("--not_kill_wallet", help="not killing walletd", action='store_true') + +args = parser.parse_args() +testOutputFile=args.output +enableMongo=False +initaPrvtKey=args.inita_prvt_key +initbPrvtKey=args.initb_prvt_key + +walletMgr=testUtils.WalletMgr(True, port=args.wallet_port, host=args.wallet_host) + +if args.impaired_network: + module = impaired_network.ImpairedNetwork() +elif args.lossy_network: + module = lossy_network.LossyNetwork() +elif args.stress_network: + module = p2p_stress.StressNetwork() +else: + errorExit("one of impaired_network, lossy_network or stress_network must be set. Please also check peer configs in p2p_test_peers.py.") + +cluster=testUtils.Cluster(walletd=True, enableMongo=enableMongo, initaPrvtKey=initaPrvtKey, initbPrvtKey=initbPrvtKey, walletHost=args.wallet_host, walletPort=args.wallet_port) + +print("BEGIN") +print("TEST_OUTPUT: %s" % (testOutputFile)) + +print("number of hosts: %d, list of hosts:" % (len(hosts))) +for i in range(len(hosts)): + Print("%s:%d" % (hosts[i], ports[i])) + +init_str='{"nodes":[' +for i in range(len(hosts)): + if i > 0: + init_str=init_str+',' + init_str=init_str+'{"host":"' + hosts[i] + '", "port":'+str(ports[i])+'}' +init_str=init_str+']}' + +#Print('init nodes with json str %s',(init_str)) +cluster.initializeNodesFromJson(init_str); + +if args.not_kill_wallet == False: + print('killing all wallets') + walletMgr.killall() + +walletMgr.cleanup() + +print('creating account keys') +accounts=testUtils.Cluster.createAccountKeys(3) +if accounts is None: + errorExit("FAILURE - create keys") +testeraAccount=accounts[0] +testeraAccount.name="testera" +currencyAccount=accounts[1] +currencyAccount.name="currency" +exchangeAccount=accounts[2] +exchangeAccount.name="exchange" + +PRV_KEY1=testeraAccount.ownerPrivateKey +PUB_KEY1=testeraAccount.ownerPublicKey +PRV_KEY2=currencyAccount.ownerPrivateKey +PUB_KEY2=currencyAccount.ownerPublicKey +PRV_KEY3=exchangeAccount.activePrivateKey +PUB_KEY3=exchangeAccount.activePublicKey + +testeraAccount.activePrivateKey=currencyAccount.activePrivateKey=PRV_KEY3 +testeraAccount.activePublicKey=currencyAccount.activePublicKey=PUB_KEY3 + +exchangeAccount.ownerPrivateKey=PRV_KEY2 +exchangeAccount.ownerPublicKey=PUB_KEY2 + +print("Stand up walletd") +if walletMgr.launch() is False: + cmdError("%s" % (WalletdName)) + errorExit("Failed to stand up eos walletd.") + +testWalletName="test" +Print("Creating wallet \"%s\"." % (testWalletName)) +testWallet=walletMgr.create(testWalletName) +if testWallet is None: + cmdError("eos wallet create") + errorExit("Failed to create wallet %s." % (testWalletName)) + +for account in accounts: + Print("Importing keys for account %s into wallet %s." % (account.name, testWallet.name)) + if not walletMgr.importKey(account, testWallet): + cmdError("%s wallet import" % (ClientName)) + errorExit("Failed to import key for account %s" % (account.name)) + +initaWalletName="inita" +Print("Creating wallet \"%s\"." % (initaWalletName)) +initaWallet=walletMgr.create(initaWalletName) +if initaWallet is None: + cmdError("eos wallet create") + errorExit("Failed to create wallet %s." % (initaWalletName)) + +initaAccount=testUtils.Cluster.initaAccount +# initbAccount=testUtils.Cluster.initbAccount + +Print("Importing keys for account %s into wallet %s." % (initaAccount.name, initaWallet.name)) +if not walletMgr.importKey(initaAccount, initaWallet): + cmdError("%s wallet import" % (ClientName)) + errorExit("Failed to import key for account %s" % (initaAccount.name)) + +node0=cluster.getNode(0) +if node0 is None: + errorExit("cluster in bad state, received None node") + +# eosio should have the same key as inita +eosio = copy.copy(initaAccount) +eosio.name = "eosio" + +Print("Info of each node:") +for i in range(len(hosts)): + node = cluster.getNode(0) + cmd="%s %s get info" % (testUtils.Utils.EosClientPath, node.endpointArgs) + trans = node.runCmdReturnJson(cmd) + Print("host %s: %s" % (hosts[i], trans)) + + +wastFile="contracts/eosio.system/eosio.system.wast" +abiFile="contracts/eosio.system/eosio.system.abi" +Print("\nPush system contract %s %s" % (wastFile, abiFile)) +trans=node0.publishContract(eosio.name, wastFile, abiFile, waitForTransBlock=True) +if trans is None: + Utils.errorExit("Failed to publish eosio.system.") +else: + Print("transaction id %s" % (node0.getTransId(trans))) + +try: + maxIndex = module.maxIndex() + for cmdInd in range(maxIndex): + (transIdList, checkacct, expBal, errmsg) = module.execute(cmdInd, node0, testeraAccount, eosio) + + if len(transIdList) == 0 and len(checkacct) == 0: + errorExit("failed to execute command in host %s:%s" % (hosts[0], errmsg)) + + successhosts = [] + attempts = 2 + while attempts > 0 and len(successhosts) < len(hosts): + attempts = attempts - 1 + for i in range(len(hosts)): + host = hosts[i] + if host in successhosts: + continue + if len(checkacct) > 0: + actBal = cluster.getNode(i).getAccountBalance(checkacct) + if expBal == actBal: + Print("acct balance verified in host %s" % (host)) + else: + Print("acct balance check failed in host %s, expect %d actual %d" % (host, expBal, actBal)) + okcount = 0 + failedcount = 0 + for j in range(len(transIdList)): + if cluster.getNode(i).getTransaction(transIdList[j]) is None: + failedcount = failedcount + 1 + else: + okcount = okcount + 1 + Print("%d transaction(s) verified in host %s, %d transaction(s) failed" % (okcount, host, failedcount)) + if failedcount == 0: + successhosts.append(host) + Print("%d host(s) passed, %d host(s) failed" % (len(successhosts), len(hosts) - len(successhosts))) +finally: + Print("\nfinally: restore everything") + module.on_exit() +exit(0) diff --git a/tests/p2p_stress.py b/tests/p2p_stress.py new file mode 100644 index 0000000000000000000000000000000000000000..5e2d688b50b9b42711418bd51f619a47ed7de5af --- /dev/null +++ b/tests/p2p_stress.py @@ -0,0 +1,103 @@ +import testUtils +import p2p_test_peers +import random +import time +import copy +import threading + +class StressNetwork: + speeds=[1,5,10,30,60,100,500] + sec=10 + maxthreads=100 + trList=[] + + def maxIndex(self): + return len(self.speeds) + + def randAcctName(self): + s="" + for i in range(12): + s=s+random.choice("abcdefghijklmnopqrstuvwxyz12345") + return s + + def _transfer(self, node, acc1, acc2, amount, threadId, round): + memo="%d %d" % (threadId, round) + tr = node.transferFunds(acc1, acc2, amount, memo) + self.trList.append(tr) + + def execute(self, cmdInd, node, ta, eosio): + print("\n==== network stress test: %d transaction(s)/s for %d secs ====" % (self.speeds[cmdInd], self.sec)) + total = self.speeds[cmdInd] * self.sec + + ta.name = self.randAcctName() + acc1 = copy.copy(ta) + print("creating new account %s" % (ta.name)) + tr = node.createAccount(ta, eosio, stakedDeposit=0, waitForTransBlock=True) + trid = node.getTransId(tr) + if trid is None: + return ([], "", 0.0, "failed to create account") + print("transaction id %s" % (trid)) + + ta.name = self.randAcctName() + acc2 = copy.copy(ta) + print("creating new account %s" % (ta.name)) + tr = node.createAccount(ta, eosio, stakedDeposit=0, waitForTransBlock=True) + trid = node.getTransId(tr) + if trid is None: + return ([], "", 0.0, "failed to create account") + print("transaction id %s" % (trid)) + + print("issue currency into %s" % (acc1.name)) + contract="eosio" + action="issue" + data="{\"to\":\"" + acc1.name + "\",\"quantity\":\"1000000.0000 EOS\"}" + opts="--permission eosio@active" + tr=node.pushMessage(contract, action, data, opts) + trid = node.getTransId(tr[1]) + if trid is None: + return ([], "", 0.0, "failed to issue currency") + print("transaction id %s" % (trid)) + node.waitForTransIdOnNode(trid) + + self.trList = [] + expBal = 0 + nthreads=self.maxthreads + if nthreads > self.speeds[cmdInd]: + nthreads = self.speeds[cmdInd] + cycle = int(total / nthreads) + total = cycle * nthreads # rounding + delay = 1.0 / self.speeds[cmdInd] * nthreads + + print("start currency trasfer from %s to %s for %d times with %d threads" % (acc1.name, acc2.name, total, nthreads)) + + t00 = time.time() + for k in range(cycle): + t0 = time.time() + amount = 1 + threadList = [] + for m in range(nthreads): + th = threading.Thread(target = self._transfer,args = (node, acc1, acc2, amount, m, k)) + th.start() + threadList.append(th) + for th in threadList: + th.join() + expBal = expBal + amount * nthreads + t1 = time.time() + if (t1-t0 < delay): + time.sleep(delay - (t1-t0)) + t11 = time.time() + print("time used = %lf" % (t11 - t00)) + + actBal = node.getAccountBalance(acc2.name) + print("account %s: expect Balance:%d, actual Balance %d" % (acc2.name, expBal, actBal)) + + transIdlist = [] + for tr in self.trList: + trid = node.getTransId(tr) + transIdlist.append(trid) + node.waitForTransIdOnNode(trid) + return (transIdlist, acc2.name, expBal, "") + + def on_exit(self): + print("end of network stress tests") + diff --git a/tests/p2p_test_peers.py b/tests/p2p_test_peers.py new file mode 100755 index 0000000000000000000000000000000000000000..66c1d06437be4759482f8f88d4b7390a362d3f12 --- /dev/null +++ b/tests/p2p_test_peers.py @@ -0,0 +1,24 @@ +import subprocess + +class P2PTestPeers: + + #for testing with localhost + sshname = "testnet" # ssh name for executing remote commands + hosts = ["localhost"] # host list + ports = [8888] # eosiod listening port of each host + devs = ["lo0"] # network device of each host + + #for testing with testnet2 + #sshname = "testnet" # ssh name for executing remote commands + #hosts = ["10.160.11.101", "10.160.12.102", "10.160.13.103", "10.160.11.104", "10.160.12.105", "10.160.13.106", "10.160.11.107", "10.160.12.108", "10.160.13.109", "10.160.11.110", "10.160.12.111", "10.160.13.112", "10.160.11.113", "10.160.12.114", "10.160.13.115", "10.160.11.116", "10.160.12.117", "10.160.13.118", "10.160.11.119", "10.160.12.120", "10.160.13.121", "10.160.11.122"] # host list + #ports = [8888, 8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888,8888, 8888] # eosiod listening port of each host + #devs = ["ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3", "ens3"] # network device of each host + + @staticmethod + def exec(remoteCmd, toprint=True): + for i in range(len(P2PTestPeers.hosts)): + remoteCmd2 = remoteCmd.replace("{dev}", P2PTestPeers.devs[i]) + cmd = "ssh " + P2PTestPeers.sshname + "@" + P2PTestPeers.hosts[i] + ' ' + remoteCmd2 + if toprint is True: + print("execute:" + cmd) + subprocess.call(cmd, shell=True) \ No newline at end of file diff --git a/tests/p2p_tests/sync/test.sh b/tests/p2p_tests/sync/test.sh index 9edb990423cb9f8d47f5d77fb4a7ea496c4fd28a..a88b8c4c6c7d6d17cad0b4c186f60ff808916bd6 100755 --- a/tests/p2p_tests/sync/test.sh +++ b/tests/p2p_tests/sync/test.sh @@ -54,12 +54,12 @@ fi total_nodes="${total_nodes:-`echo $pnodes`}" launcherPath="programs/eosio-launcher/eosio-launcher" -clientPath="programs/eosioc/eosioc" +clientPath="programs/cleos/cleos" rm -rf tn_data_* debugArg="" if [ "$debug" == true ]; then - debugArg="--eosiod \"--log-level-net-plugin debug\"" + debugArg="--nodeos \"--log-level-net-plugin debug\"" fi cmd="$launcherPath -p $pnodes -n $total_nodes -s $topo -d $delay $debugArg" diff --git a/tests/restart-scenarios-test.py b/tests/restart-scenarios-test.py index f7b04b385850805174a1e02da049c59a32af3dbb..be07c25cba1e5346fc2a6e4af9562e35c34ba959 100755 --- a/tests/restart-scenarios-test.py +++ b/tests/restart-scenarios-test.py @@ -15,7 +15,7 @@ import signal # -d # -v # --kill-sig -# --kill-count +# --kill-count # --dont-kill # --dump-error-details # --keep-logs @@ -38,7 +38,7 @@ parser.add_argument("-c", type=str, help="chain strategy[%s|%s|%s]" % default=testUtils.Utils.SyncResyncTag) parser.add_argument("--kill-sig", type=str, help="kill signal[%s|%s]" % (testUtils.Utils.SigKillTag, testUtils.Utils.SigTermTag), default=testUtils.Utils.SigKillTag) -parser.add_argument("--kill-count", type=int, help="eosiod instances to kill", default=-1) +parser.add_argument("--kill-count", type=int, help="nodeos instances to kill", default=-1) parser.add_argument("-v", help="verbose logging", action='store_true') parser.add_argument("--dont-kill", help="Leave cluster running after test finishes", action='store_true') parser.add_argument("--not-noon", help="This is not the Noon branch.", action='store_true') @@ -120,7 +120,7 @@ try: Print("Kill %d cluster node instances." % (killCount)) if cluster.killSomeEosInstances(killCount, killSignal) is False: errorExit("Failed to kill Eos instances") - Print("Eosiod instances killed.") + Print("nodeos instances killed.") Print("Spread funds and validate") if not cluster.spreadFundsAndValidate(10): @@ -133,7 +133,7 @@ try: Print ("Relaunch dead cluster nodes instances.") if cluster.relaunchEosInstances() is False: errorExit("Failed to relaunch Eos instances") - Print("Eosiod instances relaunched.") + Print("nodeos instances relaunched.") Print ("Resyncing cluster nodes.") if not cluster.waitOnClusterSync(): diff --git a/tests/slow_tests/deferred_tests.cpp b/tests/slow_tests/deferred_tests.cpp deleted file mode 100644 index 383b6ec5b6320f7b18097fc2902791d4c5855d01..0000000000000000000000000000000000000000 --- a/tests/slow_tests/deferred_tests.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ - -#include - -#include -#include -#include -#include -#include - -#include - -#include - -#include "../common/database_fixture.hpp" - -#include -#include -#include -#include -#include -#include - -#include - -using namespace eosio; -using namespace chain; - - -void Set_Proxy_Owner( testing_blockchain& chain, account_name proxy, account_name owner ) { - eosio::chain::signed_transaction trx; - trx.scope = sort_names({proxy,owner}); - transaction_emplace_message(trx, "proxy", - vector({ }), - "setowner", owner); - - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - idump((trx)); - chain.push_transaction(trx); -} - -// declared in slow_test.cpp -namespace slow_tests { - void SetCode( testing_blockchain& chain, account_name account, const char* wast ); -} - -BOOST_AUTO_TEST_SUITE(deferred_tests) - -BOOST_FIXTURE_TEST_CASE(opaque_proxy, testing_fixture) -{ try { - Make_Blockchain(chain); - chain.produce_blocks(1); - Make_Account(chain, newguy); - Make_Account(chain, proxy); - chain.produce_blocks(1); - - slow_tests::SetCode(chain, "proxy", proxy_wast); - //chain.produce_blocks(1); - - Set_Proxy_Owner(chain, "proxy", "newguy"); - chain.produce_blocks(7); - - Transfer_Asset(chain, inita, proxy, asset(100)); - chain.produce_blocks(1); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("newguy"), asset(0)); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("inita"), asset(100000-300)); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("proxy"), asset(100)); - - - chain.produce_blocks(1); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("newguy"), asset(100)); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("inita"), asset(100000-300)); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("proxy"), asset(0)); - - BOOST_CHECK_EQUAL(chain.head_block_num(), 12); - BOOST_CHECK(chain.fetch_block_by_number(12).valid()); - BOOST_CHECK(!chain.fetch_block_by_number(12)->cycles.empty()); - BOOST_CHECK(!chain.fetch_block_by_number(12)->cycles.front().empty()); - BOOST_CHECK_EQUAL(chain.fetch_block_by_number(12)->cycles.front().front().generated_input.size(), 1); -} FC_LOG_AND_RETHROW() } - -BOOST_AUTO_TEST_SUITE_END() diff --git a/tests/slow_tests/slow_tests.cpp b/tests/slow_tests/slow_tests.cpp deleted file mode 100644 index 32487929b5ad6e46d61af72acb36b87f4f1c04a5..0000000000000000000000000000000000000000 --- a/tests/slow_tests/slow_tests.cpp +++ /dev/null @@ -1,1170 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include "../common/database_fixture.hpp" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -using namespace eosio; -using namespace chain; - - - struct order_id { - account_name name; - uint64_t number = 0; - }; - - struct __attribute((packed)) bid { - order_id buyer; - unsigned __int128 price; - uint64_t quantity; - types::time expiration; - uint8_t fill_or_kill = false; - }; - struct __attribute((packed)) ask { - order_id seller; - unsigned __int128 price; - uint64_t quantity; - types::time expiration; - uint8_t fill_or_kill = false; - }; -FC_REFLECT( order_id, (name)(number) ); -FC_REFLECT( bid, (buyer)(price)(quantity)(expiration)(fill_or_kill) ); -FC_REFLECT( ask, (seller)(price)(quantity)(expiration)(fill_or_kill) ); - - struct record { - uint64_t a = 0; - uint64_t b = 0; - uint64_t c = 0; - fc::uint128 d = 0; - fc::uint128 e = 0; - }; - - struct by_abcde; - struct by_abced; - using test_index = boost::multi_index_container< - record, - indexed_by< - ordered_unique, - composite_key< record, - member, - member, - member, - member, - member - > - >, - ordered_unique, - composite_key< record, - member, - member, - member, - member, - member - > - > - > - >; -// FC_REFLECT( record, (a)(b)(c)(d)(e) ); - -BOOST_AUTO_TEST_SUITE(slow_tests) - - -BOOST_FIXTURE_TEST_CASE(multiindex, testing_fixture) -{ - test_index idx; - idx.emplace( record{1,0,0,1,9} ); - idx.emplace( record{1,1,1,2,8} ); - idx.emplace( record{1,2,3,3,7} ); - idx.emplace( record{1,2,3,5,6} ); - idx.emplace( record{1,2,3,6,5} ); - idx.emplace( record{1,2,3,7,5} ); - idx.emplace( record{1,2,3,8,3} ); - - auto& by_de = idx.get(); - auto& by_ed = idx.get(); - - auto itr = by_de.lower_bound( boost::make_tuple(1,2,3,0,0) ); - BOOST_REQUIRE( itr != by_de.end() ); - BOOST_REQUIRE( itr->d == 3 ); - - auto itr2 = by_ed.lower_bound( boost::make_tuple(1,2,3,0,0) ); - BOOST_REQUIRE( itr2 != by_ed.end() ); - BOOST_REQUIRE( itr2->e == 3 ); - //BOOST_REQUIRE( itr2 == by_ed.begin() ); - Make_Blockchain(chain) - auto& db = chain.get_mutable_database(); - db.create( [&]( auto& obj ) { - obj.scope = 1; - obj.code = 1; - obj.table = 1; - obj.primary_key = 1; - obj.secondary_key = 2; - }); - db.create( [&]( auto& obj ) { - obj.scope = 1; - obj.code = 1; - obj.table = 1; - obj.primary_key = 2; - obj.secondary_key = 3; - }); - db.create( [&]( auto& obj ) { - obj.scope = 1; - obj.code = 1; - obj.table = 1; - obj.primary_key = 3; - obj.secondary_key = 2; - }); - { - auto& sidx = db.get_index< key128x128_value_index, by_scope_secondary> (); - auto lower = sidx.lower_bound( boost::make_tuple( 1, 1, 1, 0, 0 ) ); - BOOST_REQUIRE( lower != sidx.end() ); - BOOST_REQUIRE( lower->primary_key == 1 ); - BOOST_REQUIRE( lower->secondary_key == 2 ); - } - -} - -// Test that TaPoS still works after block 65535 (See Issue #55) -BOOST_FIXTURE_TEST_CASE(tapos_wrap, testing_fixture) -{ try { - Make_Blockchain(chain) - Make_Account(chain, system); - Make_Account(chain, acct); - chain.produce_blocks(1); - Transfer_Asset(chain, inita, system, asset(1000) ); - Transfer_Asset(chain, system, acct, asset(5)); - Stake_Asset(chain, acct, asset(5).amount); - wlog("Hang on, this will take a minute..."); - chain.produce_blocks(65536); - Begin_Unstake_Asset(chain, acct, asset(1).amount); -} FC_LOG_AND_RETHROW() } - -// Verify that staking and unstaking works -BOOST_FIXTURE_TEST_CASE(stake, testing_fixture) -{ try { - // Create account sam with default balance of 100, and stake 55 of it - Make_Blockchain(chain); - Make_Account(chain, sam); - - chain.produce_blocks(); - - Transfer_Asset(chain, inita, sam, asset(55) ); - - // MakeAccount should start sam out with some staked balance - BOOST_REQUIRE_EQUAL(chain.get_staked_balance("sam"), asset(100).amount); - - Stake_Asset(chain, sam, asset(55).amount); - - // Check balances - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(155).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(0).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(0).amount); - - chain.produce_blocks(); - - // Start unstaking 20, check balances - BOOST_CHECK_THROW(Begin_Unstake_Asset(chain, sam, asset(156).amount), chain::message_precondition_exception); - Begin_Unstake_Asset(chain, sam, asset(20).amount); - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(135).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(20).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(0).amount); - - // Make sure we can't liquidate early - BOOST_CHECK_THROW(Finish_Unstake_Asset(chain, sam, asset(10).amount), chain::message_precondition_exception); - - // Fast forward to when we can liquidate - wlog("Hang on, this will take a minute..."); - chain.produce_blocks(config::staked_balance_cooldown_seconds / config::block_interval_seconds + 1); - - BOOST_CHECK_THROW(Finish_Unstake_Asset(chain, sam, asset(21).amount), chain::message_precondition_exception); - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(135).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(20).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(0).amount); - - // Liquidate 10 of the 20 unstaking and check balances - Finish_Unstake_Asset(chain, sam, asset(10).amount); - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(135).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(10).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(10).amount); - - // Liquidate 2 of the 10 left unstaking and check balances - Finish_Unstake_Asset(chain, sam, asset(2).amount); - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(135).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(8).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(12).amount); - - // Ignore the 8 left in unstaking, and begin unstaking 5, which should restake the 8, and start over unstaking 5 - Begin_Unstake_Asset(chain, sam, asset(5).amount); - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(138).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(5).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(12).amount); - - // Begin unstaking 20, which should only deduct 15 from staked, since 5 was already in unstaking - Begin_Unstake_Asset(chain, sam, asset(20).amount); - BOOST_CHECK_EQUAL(chain.get_staked_balance("sam"), asset(123).amount); - BOOST_CHECK_EQUAL(chain.get_unstaking_balance("sam"), asset(20).amount); - BOOST_CHECK_EQUAL(chain.get_liquid_balance("sam"), asset(12).amount); -} FC_LOG_AND_RETHROW() } - -vector assemble_wast( const std::string& wast ) { - // std::cout << "\n" << wast << "\n"; - IR::Module module; - std::vector parseErrors; - WAST::parseModule(wast.c_str(),wast.size(),module,parseErrors); - if(parseErrors.size()) - { - // Print any parse errors; - std::cerr << "Error parsing WebAssembly text file:" << std::endl; - for(auto& error : parseErrors) - { - std::cerr << ":" << error.locus.describe() << ": " << error.message.c_str() << std::endl; - std::cerr << error.locus.sourceLine << std::endl; - std::cerr << std::setw(error.locus.column(8)) << "^" << std::endl; - } - FC_ASSERT( !"error parsing wast" ); - } - - try - { - // Serialize the WebAssembly module. - Serialization::ArrayOutputStream stream; - WASM::serialize(stream,module); - return stream.getBytes(); - } - catch(Serialization::FatalSerializationException exception) - { - std::cerr << "Error serializing WebAssembly binary file:" << std::endl; - std::cerr << exception.message << std::endl; - throw; - } -} - -void SetCode( testing_blockchain& chain, account_name account, const char* wast ) { - try { - types::setcode handler; - handler.account = account; - - auto wasm = assemble_wast( wast ); - handler.code.resize(wasm.size()); - memcpy( handler.code.data(), wasm.data(), wasm.size() ); - - { - eosio::chain::signed_transaction trx; - trx.scope = {account}; - trx.messages.resize(1); - trx.messages[0].code = config::eos_contract_name; - trx.messages[0].authorization.emplace_back(types::account_permission{account,"active"}); - transaction_set_message(trx, 0, "setcode", handler); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - chain.push_transaction(trx); - chain.produce_blocks(1); - } -} FC_LOG_AND_RETHROW( ) } - -void TransferCurrency( testing_blockchain& chain, account_name from, account_name to, uint64_t amount ) { - eosio::chain::signed_transaction trx; - trx.scope = sort_names({from,to}); - transaction_emplace_message(trx, "currency", - vector{ {from,"active"} }, - "transfer", types::transfer{from, to, amount,""}); - - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - idump((trx)); - chain.push_transaction(trx); -} - -void WithdrawCurrency( testing_blockchain& chain, account_name from, account_name to, uint64_t amount ) { - eosio::chain::signed_transaction trx; - trx.scope = sort_names({from,to}); - transaction_emplace_message(trx, "currency", - vector{ {from,"active"},{to,"active"} }, - "transfer", types::transfer{from, to, amount,""}); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - chain.push_transaction(trx); -} - -//Test account script processing -BOOST_FIXTURE_TEST_CASE(create_script, testing_fixture) -{ try { - chain_controller::txn_msg_limits rate_limit = { fc::time_point_sec(10), 100000, fc::time_point_sec(10), 100000 }; - Make_Blockchain(chain, ::eosio::chain_plugin::default_transaction_execution_time, - ::eosio::chain_plugin::default_received_block_transaction_execution_time, - ::eosio::chain_plugin::default_create_block_transaction_execution_time, rate_limit); - chain.produce_blocks(10); - Make_Account(chain, currency); - chain.produce_blocks(1); - - - types::setcode handler; - handler.account = "currency"; - - auto wasm = assemble_wast( currency_wast ); - handler.code.resize(wasm.size()); - memcpy( handler.code.data(), wasm.data(), wasm.size() ); - - { - eosio::chain::signed_transaction trx; - trx.scope = {"currency"}; - trx.messages.resize(1); - trx.messages[0].code = config::eos_contract_name; - trx.messages[0].authorization.emplace_back(types::account_permission{"currency","active"}); - transaction_set_message(trx, 0, "setcode", handler); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - chain.push_transaction(trx); - chain.produce_blocks(1); - } - - - auto start = fc::time_point::now(); - for (uint32_t i = 0; i < 10000; ++i) - { - eosio::chain::signed_transaction trx; - trx.scope = sort_names({"currency","inita"}); - transaction_emplace_message(trx, "currency", - vector{ {"currency","active"} }, - "transfer", types::transfer{"currency", "inita", 1+i,""}); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - //idump((trx)); - chain.push_transaction(trx); - } - auto end = fc::time_point::now(); - idump((10000*1000000.0 / (end-start).count())); - - chain.produce_blocks(10); - -} FC_LOG_AND_RETHROW() } - - -static const uint64_t precision = 1000ll*1000ll*1000ll*1000ll*1000ll; -unsigned __int128 to_price( double p ) { - uint64_t pi(p); - unsigned __int128 result(pi); - result *= precision; - - double fract = p - pi; - result += uint64_t( fract * precision ); - return result; -} - - -void SellCurrency( testing_blockchain& chain, account_name seller, account_name exchange, uint64_t ordernum, uint64_t cur_quantity, double price ) { - - ask b { order_id{seller,ordernum}, - to_price(price), - cur_quantity, - chain.head_block_time()+fc::days(3) - }; - - eosio::chain::signed_transaction trx; - trx.scope = sort_names({"exchange"}); - transaction_emplace_message(trx, "exchange", - vector{ {seller,"active"} }, - "sell", b ); - //trx.messages.back().set_packed( "sell", b); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - chain.push_transaction(trx); - -} -void BuyCurrency( testing_blockchain& chain, account_name buyer, account_name exchange, uint64_t ordernum, uint64_t cur_quantity, double price ) { - bid b { order_id{buyer,ordernum}, - to_price(price), - cur_quantity, - chain.head_block_time()+fc::days(3) - }; - - eosio::chain::signed_transaction trx; - trx.scope = sort_names({"exchange"}); - transaction_emplace_message(trx, "exchange", - vector{ {buyer,"active"} }, - "buy", b ); - //trx.messages.back().set_packed( "buy", b); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - chain.push_transaction(trx); -} - -BOOST_FIXTURE_TEST_CASE(create_exchange, testing_fixture) { - try { - Make_Blockchain(chain); - chain.produce_blocks(2); - Make_Account(chain, system); - Make_Account(chain, currency); - Make_Account(chain, exchange); - chain.produce_blocks(1); - - SetCode(chain, "currency", currency_wast); - SetCode(chain, "exchange", exchange_wast); - - chain.produce_blocks(1); - - ilog( "transfering currency to the users" ); - TransferCurrency( chain, "currency", "inita", 1000 ); - TransferCurrency( chain, "currency", "initb", 2000 ); - - chain.produce_blocks(1); - ilog( "transfering funds to the exchange" ); - TransferCurrency( chain, "inita", "exchange", 1000 ); - TransferCurrency( chain, "initb", "exchange", 2000 ); - - Transfer_Asset(chain, inita, exchange, asset(500)); - Transfer_Asset(chain, initb, exchange, asset(500)); - - BOOST_REQUIRE_THROW( TransferCurrency( chain, "initb", "exchange", 2000 ), fc::exception ); // insufficient funds - - - BOOST_REQUIRE_THROW( WithdrawCurrency( chain, "exchange", "initb", 2001 ), fc::exception ); // insufficient funds - - ilog( "withdrawing from exchange" ); - - WithdrawCurrency( chain, "exchange", "initb", 2000 ); - chain.produce_blocks(1); - - ilog( "send back to exchange" ); - TransferCurrency( chain, "initb", "exchange", 2000 ); - chain.produce_blocks(1); - - wlog( "start buy and sell" ); - uint64_t order_num = 1; - SellCurrency( chain, "initb", "exchange", order_num++, 100, .5 ); - SellCurrency( chain, "initb", "exchange", order_num++, 100, .75 ); - SellCurrency( chain, "initb", "exchange", order_num++, 100, .85 ); - //BOOST_REQUIRE_THROW( SellCurrency( chain, "initb", "exchange", 1, 100, .5 ), fc::exception ); // order id already exists - //SellCurrency( chain, "initb", "exchange", 2, 100, .75 ); - -// BuyCurrency( chain, "initb", "exchange", 1, 50, .25 ); - BuyCurrency( chain, "initb", "exchange", order_num++, 50, .5 ); - //BOOST_REQUIRE_THROW( BuyCurrency( chain, "initb", "exchange", 1, 50, .25 ), fc::exception ); // order id already exists - - /// this should buy 5 from initb order 2 at a price of .75 - //BuyCurrency( chain, "initb", "exchange", 2, 50, .8 ); - - } FC_LOG_AND_RETHROW() -} - -//Test account script float rejection -BOOST_FIXTURE_TEST_CASE(create_script_w_float, testing_fixture) -{ try { - Make_Blockchain(chain); - chain.produce_blocks(10); - Make_Account(chain, simplecoin); - chain.produce_blocks(1); - - -std::string wast_apply = -R"( -(module - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (import "env" "account_name_unpack" (func $account_name_unpack (param i32 i32))) - (import "env" "Varint_unpack" (func $Varint_unpack (param i32 i32))) - (import "env" "assert" (func $assert (param i32 i32))) - (import "env" "load" (func $load (param i32 i32 i32 i32) (result i32))) - (import "env" "memcpy" (func $memcpy (param i32 i32 i32) (result i32))) - (import "env" "read_message" (func $read_message (param i32 i32) (result i32))) - (import "env" "remove" (func $remove (param i32 i32) (result i32))) - (import "env" "store" (func $store (param i32 i32 i32 i32))) - (table 0 anyfunc) - (memory $0 1) - (data (i32.const 8224) "out of memory\00") - (data (i32.const 8240) "string is longer than account name allows\00") - (data (i32.const 8288) "read past end of stream\00") - (data (i32.const 8368) "simplecoin\00") - (data (i32.const 8608) "no existing balance\00") - (data (i32.const 8640) "insufficient funds\00") - (export "memory" (memory $0)) - (export "malloc" (func $malloc)) - (export "DataStream_init" (func $DataStream_init)) - (export "account_name_initString" (func $account_name_initString)) - (export "account_name_initCString" (func $account_name_initCString)) - (export "uint64_unpack" (func $uint64_unpack)) - (export "String_unpack" (func $String_unpack)) - (export "Transfer_unpack" (func $Transfer_unpack)) - (export "init" (func $init)) - (export "apply_simplecoin_transfer" (func $apply_simplecoin_transfer)) - (func $malloc (param $0 i32) (result i32) - (local $1 i32) - (i32.store offset=8208 - (i32.const 0) - (tee_local $0 - (i32.add - (tee_local $1 - (i32.load offset=8208 - (i32.const 0) - ) - ) - (i32.and - (i32.add - (get_local $0) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (call $assert - (i32.lt_u - (get_local $0) - (i32.const 8192) - ) - (i32.const 8224) - ) - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - (func $DataStream_init (param $0 i32) (param $1 i32) (param $2 i32) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (i32.store offset=8 - (get_local $0) - (i32.add - (get_local $1) - (get_local $2) - ) - ) - ) - (func $account_name_initString (param $0 i32) (param $1 i32) - (call $assert - (i32.lt_u - (i32.load - (get_local $1) - ) - (i32.const 33) - ) - (i32.const 8240) - ) - (drop - (call $memcpy - (get_local $0) - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - (func $account_name_initCString (param $0 i32) (param $1 i32) (param $2 i32) - (call $assert - (i32.lt_u - (get_local $2) - (i32.const 33) - ) - (i32.const 8240) - ) - (drop - (call $memcpy - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - ) - (func $uint64_unpack (param $0 i32) (param $1 i32) - (call $assert - (i32.le_u - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.const 8) - ) - (i32.load offset=8 - (get_local $0) - ) - ) - (i32.const 8288) - ) - (i64.store align=1 - (get_local $1) - (i64.load align=1 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.const 8) - ) - ) - ) - (func $String_unpack (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (call $Varint_unpack - (get_local $0) - (i32.const 8312) - ) - (call $assert - (i32.le_u - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.load offset=8312 - (i32.const 0) - ) - ) - (i32.load offset=8 - (get_local $0) - ) - ) - (i32.const 8288) - ) - (i32.store offset=8208 - (i32.const 0) - (tee_local $3 - (i32.add - (i32.and - (i32.add - (i32.load offset=8312 - (i32.const 0) - ) - (i32.const 11) - ) - (i32.const -8) - ) - (tee_local $2 - (i32.load offset=8208 - (i32.const 0) - ) - ) - ) - ) - ) - (call $assert - (i32.lt_u - (get_local $3) - (i32.const 8192) - ) - (i32.const 8224) - ) - (drop - (call $memcpy - (i32.add - (get_local $2) - (i32.const 20) - ) - (i32.load offset=4 - (get_local $0) - ) - (i32.load offset=8312 - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - (func $Transfer_unpack (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (call $account_name_unpack - (get_local $0) - (get_local $1) - ) - (call $account_name_unpack - (get_local $0) - (i32.add - (get_local $1) - (i32.const 32) - ) - ) - (call $assert - (i32.le_u - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.const 8) - ) - (i32.load offset=8 - (get_local $0) - ) - ) - (i32.const 8288) - ) - (i64.store offset=64 align=1 - (get_local $1) - (i64.load align=1 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.const 8) - ) - ) - (call $Varint_unpack - (get_local $0) - (i32.const 8312) - ) - (call $assert - (i32.le_u - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.load offset=8312 - (i32.const 0) - ) - ) - (i32.load offset=8 - (get_local $0) - ) - ) - (i32.const 8288) - ) - (i32.store offset=8208 - (i32.const 0) - (tee_local $3 - (i32.add - (i32.and - (i32.add - (i32.load offset=8312 - (i32.const 0) - ) - (i32.const 11) - ) - (i32.const -8) - ) - (tee_local $2 - (i32.load offset=8208 - (i32.const 0) - ) - ) - ) - ) - ) - (call $assert - (i32.lt_u - (get_local $3) - (i32.const 8192) - ) - (i32.const 8224) - ) - (drop - (call $memcpy - (i32.add - (get_local $2) - (i32.const 20) - ) - (i32.load offset=4 - (get_local $0) - ) - (i32.load offset=8312 - (i32.const 0) - ) - ) - ) - (i32.store offset=72 - (get_local $1) - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - (func $init - (call $assert - (i32.const 1) - (i32.const 8240) - ) - (i64.store offset=8320 - (i32.const 0) - (i64.const 1000000) - ) - (i32.store16 offset=8336 - (i32.const 0) - (i32.load16_u offset=8376 align=1 - (i32.const 0) - ) - ) - (i64.store offset=8328 - (i32.const 0) - (i64.load offset=8368 align=1 - (i32.const 0) - ) - ) - (call $store - (i32.const 8328) - (i32.const 32) - (i32.const 8320) - (i32.const 8) - ) - ) - (func $apply_simplecoin_transfer - (local $0 i32) - (local $1 i32) - (local $2 i64) - (set_local $0 - (call $read_message - (i32.const 8384) - (i32.const 100) - ) - ) - (i32.store offset=8568 - (i32.const 0) - (i32.const 8384) - ) - (i32.store offset=8572 - (i32.const 0) - (i32.const 8384) - ) - (i32.store offset=8576 - (i32.const 0) - (i32.add - (get_local $0) - (i32.const 8384) - ) - ) - (call $account_name_unpack - (i32.const 8568) - (i32.const 8488) - ) - (call $account_name_unpack - (i32.const 8568) - (i32.const 8520) - ) - (call $assert - (i32.le_u - (i32.add - (i32.load offset=8572 - (i32.const 0) - ) - (i32.const 8) - ) - (i32.load offset=8576 - (i32.const 0) - ) - ) - (i32.const 8288) - ) - (i64.store offset=8552 - (i32.const 0) - (i64.load align=1 - (tee_local $0 - (i32.load offset=8572 - (i32.const 0) - ) - ) - ) - ) - (i32.store offset=8572 - (i32.const 0) - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (call $Varint_unpack - (i32.const 8568) - (i32.const 8312) - ) - (call $assert - (i32.le_u - (i32.add - (i32.load offset=8572 - (i32.const 0) - ) - (i32.load offset=8312 - (i32.const 0) - ) - ) - (i32.load offset=8576 - (i32.const 0) - ) - ) - (i32.const 8288) - ) - (i32.store offset=8208 - (i32.const 0) - (tee_local $1 - (i32.add - (i32.and - (i32.add - (i32.load offset=8312 - (i32.const 0) - ) - (i32.const 11) - ) - (i32.const -8) - ) - (tee_local $0 - (i32.load offset=8208 - (i32.const 0) - ) - ) - ) - ) - ) - (call $assert - (i32.lt_u - (get_local $1) - (i32.const 8192) - ) - (i32.const 8224) - ) - (drop - (call $memcpy - (i32.add - (get_local $0) - (i32.const 20) - ) - (i32.load offset=8572 - (i32.const 0) - ) - (i32.load offset=8312 - (i32.const 0) - ) - ) - ) - (i64.store offset=8592 - (i32.const 0) - (i64.const 0) - ) - (i32.store offset=8560 - (i32.const 0) - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (call $assert - (i32.eq - (call $load - (i32.const 8488) - (i32.const 32) - (i32.const 8584) - (i32.const 8) - ) - (i32.const 8) - ) - (i32.const 8608) - ) - (call $assert - (i64.ge_s - (i64.load offset=8584 - (i32.const 0) - ) - (i64.load offset=8552 - (i32.const 0) - ) - ) - (i32.const 8640) - ) - (drop - (call $load - (i32.const 8520) - (i32.const 32) - (i32.const 8592) - (i32.const 8) - ) - ) - (i64.store offset=8592 - (i32.const 0) - (i64.add - (i64.load offset=8592 - (i32.const 0) - ) - (tee_local $2 - (i64.load offset=8552 - (i32.const 0) - ) - ) - ) - ) - (i64.store offset=8584 - (i32.const 0) - (tee_local $2 - (i64.sub - (i64.load offset=8584 - (i32.const 0) - ) - (get_local $2) - ) - ) - ) - (block $label$0 - (br_if $label$0 - (f64.lt - (f64.add - (f64.convert_s/i64 - (get_local $2) - ) - (f64.const 0.5) - ) - (f64.const 50.5) - ) - ) - (block $label$1 - (br_if $label$1 - (i64.eqz - (get_local $2) - ) - ) - (call $store - (i32.const 8488) - (i32.const 32) - (i32.const 8584) - (i32.const 8) - ) - (br $label$0) - ) - (drop - (call $remove - (i32.const 8488) - (i32.const 32) - ) - ) - ) - (call $store - (i32.const 8520) - (i32.const 32) - (i32.const 8592) - (i32.const 8) - ) - ) -) - -)"; - - types::setcode handler; - handler.account = "simplecoin"; - - auto wasm = assemble_wast( wast_apply ); - handler.code.resize(wasm.size()); - memcpy( handler.code.data(), wasm.data(), wasm.size() ); - - eosio::chain::signed_transaction trx; - trx.scope = {"simplecoin"}; - trx.messages.resize(1); - trx.messages[0].code = config::eos_contract_name; - trx.messages[0].authorization.emplace_back(types::account_permission{"simplecoin","active"}); - transaction_set_message(trx, 0, "setcode", handler); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - try { - chain.push_transaction(trx); - BOOST_FAIL("floating point instructions should be rejected"); -/* } catch (const Serialization::FatalSerializationException& fse) { - BOOST_CHECK_EQUAL("float instructions not allowed", fse.message); -*/ } catch (const std::exception& exp) { - BOOST_FAIL("Serialization::FatalSerializationException does not inherit from std::exception"); - } catch (...) { - // empty throw expected, since - } -} FC_LOG_AND_RETHROW() } - -//Test account script float rejection -BOOST_FIXTURE_TEST_CASE(create_script_w_loop, testing_fixture) -{ try { - Make_Blockchain(chain); - chain.produce_blocks(10); - Make_Account(chain, currency); - chain.produce_blocks(1); - - - types::setcode handler; - handler.account = "currency"; - - auto wasm = assemble_wast( infinite_wast ); - handler.code.resize(wasm.size()); - memcpy( handler.code.data(), wasm.data(), wasm.size() ); - - { - eosio::chain::signed_transaction trx; - trx.scope = {"currency"}; - trx.messages.resize(1); - trx.messages[0].code = config::eos_contract_name; - trx.messages[0].authorization.emplace_back(types::account_permission{"currency","active"}); - transaction_set_message(trx, 0, "setcode", handler); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - chain.push_transaction(trx); - chain.produce_blocks(1); - } - - - { - eosio::chain::signed_transaction trx; - trx.scope = sort_names({"currency","inita"}); - transaction_emplace_message(trx, "currency", - vector{ {"currency","active"} }, - "transfer", types::transfer{"currency", "inita", 1,""}); - trx.expiration = chain.head_block_time() + 100; - transaction_set_reference_block(trx, chain.head_block_id()); - try - { - wlog("starting long transaction"); - chain.push_transaction(trx); - BOOST_FAIL("transaction should have failed with checktime_exceeded"); - } - catch (const eosio::chain::checktime_exceeded& check) - { - wlog("checktime_exceeded caught"); - } - } -} FC_LOG_AND_RETHROW() } - -BOOST_AUTO_TEST_SUITE_END() diff --git a/tests/slow_tests/wast/loop.cpp b/tests/slow_tests/wast/loop.cpp deleted file mode 100644 index 39f1a8ea01b998f8c866ebefdd223bd77f0a57ea..0000000000000000000000000000000000000000 --- a/tests/slow_tests/wast/loop.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -extern "C" { -typedef long long uint64_t; -typedef unsigned int uint32_t; -typedef uint64_t AccountName; -int load( const void* keyptr, int keylen, void* valueptr, int valuelen ); -void store( const void* keyptr, int keylen, const void* valueptr, int valuelen ); -int read_message( void* dest, int destsize ); -int remove( const void* key, int keyLength ); -void printi( uint64_t ); -void print( const char* str ); -void assert( int test, const char* message ); -void* memcpy( void* dest, const void* src, uint32_t size ); -uint64_t name_to_int64( const char* name ); -bool loopControl(int i); -/* -void* malloc( unsigned int size ) { - static char dynamic_memory[1024*8]; - static int start = 0; - int old_start = start; - start += 8*((size+7)/8); - assert( start < sizeof(dynamic_memory), "out of memory" ); - return &dynamic_memory[old_start]; -} -*/ -} - - -template -int load( const Key& key, Value& v ) { return load( &key, sizeof(Key), &v, sizeof(Value) ); } -template -void store( const Key& key, const Value& v ) { store( &key, sizeof(key), &v, sizeof(v) ); } -template -void remove( const Key& key ) { remove( &key, sizeof(key) ); } -template -void read_message( Message& m ) { read_message( &m, sizeof(Message) ); } -/// END BUILT IN LIBRARY.... everything below this is "user contract" - - -extern "C" { -struct transfer { - uint64_t from; - uint64_t to; - uint64_t amount; - char memo[]; -}; - -static_assert( sizeof(transfer) == 3*sizeof(uint64_t), "unexpected padding" ); - -struct Balance { - uint64_t balance; -}; - -void init() { - static Balance initial = { uint64_t(10)*1000*1000ll*1000ll }; - static AccountName simplecoin; - simplecoin = name_to_int64( "simplecoin" ); - print( "on_init called with "); printi( initial.balance ); print( "\n"); - store( simplecoin, initial ); -} - -void apply_simplecoin_transfer() { - static transfer message; - static Balance from_balance; - static Balance to_balance; - to_balance.balance = 0; - - read_message( message ); - load( message.from, from_balance ); - load( message.to, to_balance ); - - assert( from_balance.balance >= message.amount, "insufficient funds" ); - - int i = 0; - bool cont = true; - - while (cont) { - cont = loopControl(i++); - } - - from_balance.balance -= message.amount; - to_balance.balance += message.amount; - - if( from_balance.balance ) - store( message.from, from_balance ); - else - remove( message.from ); - - store( message.to, to_balance ); -} -} // extern "C" diff --git a/tests/slow_tests/wast/loop.wast b/tests/slow_tests/wast/loop.wast deleted file mode 100644 index a32d572dbbfb0b6cb90947a5cd272ecd368e1c9a..0000000000000000000000000000000000000000 --- a/tests/slow_tests/wast/loop.wast +++ /dev/null @@ -1,168 +0,0 @@ -const char* wast_apply = R"====((module - (type $FUNCSIG$ji (func (param i32) (result i64))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vj (func (param i64))) - (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$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (import "env" "eos_assert" (func $eos_assert (param i32 i32))) - (import "env" "load" (func $load (param i32 i32 i32 i32) (result i32))) - (import "env" "loopControl" (func $loopControl (param i32) (result i32))) - (import "env" "name_to_int64" (func $name_to_int64 (param i32) (result i64))) - (import "env" "print" (func $print (param i32))) - (import "env" "printi" (func $printi (param i64))) - (import "env" "readMessage" (func $readMessage (param i32 i32) (result i32))) - (import "env" "remove" (func $remove (param i32 i32) (result i32))) - (import "env" "store" (func $store (param i32 i32 i32 i32))) - (table 0 anyfunc) - (memory $0 1) - (data (i32.const 16) "\00\e4\0bT\02\00\00\00") - (data (i32.const 32) "simplecoin\00") - (data (i32.const 48) "on_init called with \00") - (data (i32.const 80) "\n\00") - (data (i32.const 128) "insufficient funds\00") - (export "memory" (memory $0)) - (export "init" (func $init)) - (export "apply_simplecoin_transfer" (func $apply_simplecoin_transfer)) - (func $init - (i64.store offset=24 - (i32.const 0) - (call $name_to_int64 - (i32.const 32) - ) - ) - (call $print - (i32.const 48) - ) - (call $printi - (i64.load offset=16 - (i32.const 0) - ) - ) - (call $print - (i32.const 80) - ) - (call $store - (i32.const 24) - (i32.const 8) - (i32.const 16) - (i32.const 8) - ) - ) - (func $apply_simplecoin_transfer - (local $0 i32) - (local $1 i64) - (local $2 i64) - (local $3 i32) - (set_local $3 - (i32.const 0) - ) - (i64.store offset=120 - (i32.const 0) - (i64.const 0) - ) - (drop - (call $readMessage - (i32.const 88) - (i32.const 24) - ) - ) - (drop - (call $load - (i32.const 88) - (i32.const 8) - (i32.const 112) - (i32.const 8) - ) - ) - (drop - (call $load - (i32.const 96) - (i32.const 8) - (i32.const 120) - (i32.const 8) - ) - ) - (call $eos_assert - (i64.ge_s - (i64.load offset=112 - (i32.const 0) - ) - (i64.load offset=104 - (i32.const 0) - ) - ) - (i32.const 128) - ) - (loop $label$0 - (set_local $0 - (call $loopControl - (get_local $3) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br_if $label$0 - (get_local $0) - ) - ) - (i64.store offset=112 - (i32.const 0) - (tee_local $2 - (i64.sub - (i64.load offset=112 - (i32.const 0) - ) - (tee_local $1 - (i64.load offset=104 - (i32.const 0) - ) - ) - ) - ) - ) - (i64.store offset=120 - (i32.const 0) - (i64.add - (get_local $1) - (i64.load offset=120 - (i32.const 0) - ) - ) - ) - (block $label$1 - (block $label$2 - (br_if $label$2 - (i64.eqz - (get_local $2) - ) - ) - (call $store - (i32.const 88) - (i32.const 8) - (i32.const 112) - (i32.const 8) - ) - (br $label$1) - ) - (drop - (call $remove - (i32.const 88) - (i32.const 8) - ) - ) - ) - (call $store - (i32.const 96) - (i32.const 8) - (i32.const 120) - (i32.const 8) - ) - ) -))===="; diff --git a/tests/slow_tests/wast/simplecoin.cpp b/tests/slow_tests/wast/simplecoin.cpp deleted file mode 100644 index c561f34ff2a8ba8aecb5dd05d9c7948472571fab..0000000000000000000000000000000000000000 --- a/tests/slow_tests/wast/simplecoin.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -extern "C" { -typedef long long uint64_t; -typedef unsigned int uint32_t; -typedef uint64_t AccountName; -int load( const void* keyptr, int keylen, void* valueptr, int valuelen ); -void store( const void* keyptr, int keylen, const void* valueptr, int valuelen ); -int read_message( void* dest, int destsize ); -int remove( const void* key, int keyLength ); -void printi( uint64_t ); -void print( const char* str ); -void assert( int test, const char* message ); -void* memcpy( void* dest, const void* src, uint32_t size ); -uint64_t name_to_int64( const char* name ); -/* -void* malloc( unsigned int size ) { - static char dynamic_memory[1024*8]; - static int start = 0; - int old_start = start; - start += 8*((size+7)/8); - assert( start < sizeof(dynamic_memory), "out of memory" ); - return &dynamic_memory[old_start]; -} -*/ -} - - -template -int load( const Key& key, Value& v ) { return load( &key, sizeof(Key), &v, sizeof(Value) ); } -template -void store( const Key& key, const Value& v ) { store( &key, sizeof(key), &v, sizeof(v) ); } -template -void remove( const Key& key ) { remove( &key, sizeof(key) ); } -template -void read_message( Message& m ) { read_message( &m, sizeof(Message) ); } -/// END BUILT IN LIBRARY.... everything below this is "user contract" - - -extern "C" { -struct transfer { - uint64_t from; - uint64_t to; - uint64_t amount; - char memo[]; -}; - -static_assert( sizeof(transfer) == 3*sizeof(uint64_t), "unexpected padding" ); - -struct Balance { - uint64_t balance; -}; - -void init() { - static Balance initial = { uint64_t(10)*1000*1000ll*1000ll }; - static AccountName simplecoin; - simplecoin = name_to_int64( "simplecoin" ); - print( "on_init called with "); printi( initial.balance ); print( "\n"); - store( simplecoin, initial ); -} - -void apply_simplecoin_transfer() { - static transfer message; - static Balance from_balance; - static Balance to_balance; - to_balance.balance = 0; - - read_message( message ); - load( message.from, from_balance ); - load( message.to, to_balance ); - - assert( from_balance.balance >= message.amount, "insufficient funds" ); - - from_balance.balance -= message.amount; - to_balance.balance += message.amount; - - if( from_balance.balance ) - store( message.from, from_balance ); - else - remove( message.from ); - - store( message.to, to_balance ); -} -} // extern "C" diff --git a/tests/slow_tests/wast/simplecoin.wast b/tests/slow_tests/wast/simplecoin.wast deleted file mode 100644 index 7d7813a4c05da1c73771a0b5df35d9e744423ef3..0000000000000000000000000000000000000000 --- a/tests/slow_tests/wast/simplecoin.wast +++ /dev/null @@ -1,145 +0,0 @@ -const char* simplecoin_wast = R"====((module - (type $FUNCSIG$ji (func (param i32) (result i64))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$vj (func (param i64))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (import "env" "eos_assert" (func $eos_assert (param i32 i32))) - (import "env" "load" (func $load (param i32 i32 i32 i32) (result i32))) - (import "env" "name_to_int64" (func $name_to_int64 (param i32) (result i64))) - (import "env" "print" (func $print (param i32))) - (import "env" "printi" (func $printi (param i64))) - (import "env" "readMessage" (func $readMessage (param i32 i32) (result i32))) - (import "env" "remove" (func $remove (param i32 i32) (result i32))) - (import "env" "store" (func $store (param i32 i32 i32 i32))) - (table 0 anyfunc) - (memory $0 1) - (data (i32.const 16) "\00\e4\0bT\02\00\00\00") - (data (i32.const 32) "simplecoin\00") - (data (i32.const 48) "on_init called with \00") - (data (i32.const 80) "\n\00") - (data (i32.const 128) "insufficient funds\00") - (export "memory" (memory $0)) - (export "init" (func $init)) - (export "apply_simplecoin_transfer" (func $apply_simplecoin_transfer)) - (func $init - (i64.store offset=24 - (i32.const 0) - (call $name_to_int64 - (i32.const 32) - ) - ) - (call $print - (i32.const 48) - ) - (call $printi - (i64.load offset=16 - (i32.const 0) - ) - ) - (call $print - (i32.const 80) - ) - (call $store - (i32.const 24) - (i32.const 8) - (i32.const 16) - (i32.const 8) - ) - ) - (func $apply_simplecoin_transfer - (local $0 i64) - (local $1 i64) - (i64.store offset=120 - (i32.const 0) - (i64.const 0) - ) - (drop - (call $readMessage - (i32.const 88) - (i32.const 24) - ) - ) - (drop - (call $load - (i32.const 88) - (i32.const 8) - (i32.const 112) - (i32.const 8) - ) - ) - (drop - (call $load - (i32.const 96) - (i32.const 8) - (i32.const 120) - (i32.const 8) - ) - ) - (call $eos_assert - (i64.ge_s - (i64.load offset=112 - (i32.const 0) - ) - (i64.load offset=104 - (i32.const 0) - ) - ) - (i32.const 128) - ) - (i64.store offset=112 - (i32.const 0) - (tee_local $1 - (i64.sub - (i64.load offset=112 - (i32.const 0) - ) - (tee_local $0 - (i64.load offset=104 - (i32.const 0) - ) - ) - ) - ) - ) - (i64.store offset=120 - (i32.const 0) - (i64.add - (get_local $0) - (i64.load offset=120 - (i32.const 0) - ) - ) - ) - (block $label$0 - (block $label$1 - (br_if $label$1 - (i64.eqz - (get_local $1) - ) - ) - (call $store - (i32.const 88) - (i32.const 8) - (i32.const 112) - (i32.const 8) - ) - (br $label$0) - ) - (drop - (call $remove - (i32.const 88) - (i32.const 8) - ) - ) - ) - (call $store - (i32.const 96) - (i32.const 8) - (i32.const 120) - (i32.const 8) - ) - ) -))===="; diff --git a/tests/testUtils.py b/tests/testUtils.py index f2110d166e9c6422fb45a680ff9589ce5f83df03..aadfa52d07d90f3a623f7c3bc8917916a98dff7a 100755 --- a/tests/testUtils.py +++ b/tests/testUtils.py @@ -6,6 +6,7 @@ import glob import shutil import time import os +import platform from collections import namedtuple import re import string @@ -23,13 +24,13 @@ class Utils: Debug=False FNull = open(os.devnull, 'w') - EosClientPath="programs/eosioc/eosioc" + EosClientPath="programs/cleos/cleos" EosWalletName="eosiowd" EosWalletPath="programs/eosiowd/"+ EosWalletName - EosServerName="eosiod" - EosServerPath="programs/eosiod/"+ EosServerName + EosServerName="nodeos" + EosServerPath="programs/nodeos/"+ EosServerName EosLauncherPath="programs/eosio-launcher/eosio-launcher" MongoPath="mongo" @@ -52,7 +53,7 @@ class Utils: systemWaitTimeout=60 - # mongoSyncTime: eosiod mongodb plugin seems to sync with a 10-15 seconds delay. This will inject + # mongoSyncTime: nodeos mongodb plugin seems to sync with a 10-15 seconds delay. This will inject # a wait period before the 2nd DB check (if first check fails) mongoSyncTime=25 amINoon=True @@ -971,15 +972,15 @@ class WalletMgr(object): __walletDataDir="test_wallet_0" # walletd [True|False] Will wallet me in a standalone process - def __init__(self, walletd, eosiodPort=8888, eosiodHost="localhost", port=8899, host="localhost"): + def __init__(self, walletd, nodeosPort=8888, nodeosHost="localhost", port=8899, host="localhost"): self.walletd=walletd - self.eosiodPort=eosiodPort - self.eosiodHost=eosiodHost + self.nodeosPort=nodeosPort + self.nodeosHost=nodeosHost self.port=port self.host=host self.wallets={} self.__walletPid=None - self.endpointArgs="--host %s --port %d" % (self.eosiodHost, self.eosiodPort) + self.endpointArgs="--host %s --port %d" % (self.nodeosHost, self.nodeosPort) if self.walletd: self.endpointArgs += " --wallet-host %s --wallet-port %d" % (self.host, self.port) @@ -1206,7 +1207,7 @@ class Cluster(object): cmdArr.append("--nogen") if not self.walletd or self.enableMongo: if Utils.amINoon: - cmdArr.append("--eosiod") + cmdArr.append("--nodeos") else: cmdArr.append("--eosd") if not self.walletd: @@ -1532,9 +1533,11 @@ class Cluster(object): nodes=[] try: - pgrepOpts="-a" - if sys.platform == "darwin": - pgrepOpts="-fl" + pgrepOpts="-fl" + if platform.linux_distribution()[0] == "Ubuntu": + pgrepOpts="-a" + elif platform.linux_distribution()[0] == "LinuxMint": + pgrepOpts="-a" cmd="pgrep %s %s" % (pgrepOpts, Utils.EosServerName) Utils.Debug and Utils.Print("cmd: %s" % (cmd)) @@ -1557,7 +1560,7 @@ class Cluster(object): return nodes - # Check state of running eosiod process and update EosInstanceInfos + # Check state of running nodeos process and update EosInstanceInfos #def updateEosInstanceInfos(eosInstanceInfos): def updateNodesStatus(self): for node in self.nodes: diff --git a/tests/tests/special_accounts_tests.cpp b/tests/tests/special_accounts_tests.cpp deleted file mode 100644 index 1050fc8c071c8b8d726f248a533dbc57d98c8cb3..0000000000000000000000000000000000000000 --- a/tests/tests/special_accounts_tests.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE.txt - */ -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include - -#include - -#include -#include -#include -#include - -#include "../common/database_fixture.hpp" - -using namespace eosio; -using namespace chain; - -BOOST_AUTO_TEST_SUITE(special_account_tests) - -//Check special accounts exits in genesis -BOOST_FIXTURE_TEST_CASE(accounts_exists, testing_fixture) -{ try { - - Make_Blockchain(chain); - - auto nobody = chain_db.find(config::nobody_account_name); - BOOST_CHECK(nobody != nullptr); - const auto& nobody_active_authority = chain_db.get(boost::make_tuple(config::nobody_account_name, config::active_name)); - BOOST_CHECK_EQUAL(nobody_active_authority.auth.threshold, 0); - BOOST_CHECK_EQUAL(nobody_active_authority.auth.accounts.size(), 0); - BOOST_CHECK_EQUAL(nobody_active_authority.auth.keys.size(), 0); - - const auto& nobody_owner_authority = chain_db.get(boost::make_tuple(config::nobody_account_name, config::owner_name)); - BOOST_CHECK_EQUAL(nobody_owner_authority.auth.threshold, 0); - BOOST_CHECK_EQUAL(nobody_owner_authority.auth.accounts.size(), 0); - BOOST_CHECK_EQUAL(nobody_owner_authority.auth.keys.size(), 0); - - // TODO: check for anybody account - //auto anybody = chain_db.find(config::anybody_account_name); - //BOOST_CHECK(anybody == nullptr); - - auto producers = chain_db.find(config::producers_account_name); - BOOST_CHECK(producers != nullptr); - - auto& gpo = chain_db.get(); - - const auto& producers_active_authority = chain_db.get(boost::make_tuple(config::producers_account_name, config::active_name)); - BOOST_CHECK_EQUAL(producers_active_authority.auth.threshold, config::producers_authority_threshold); - BOOST_CHECK_EQUAL(producers_active_authority.auth.accounts.size(), gpo.active_producers.size()); - BOOST_CHECK_EQUAL(producers_active_authority.auth.keys.size(), 0); - - std::vector active_auth; - for(auto& apw : producers_active_authority.auth.accounts) { - active_auth.emplace_back(apw.permission.account); - } - - std::vector diff; - std::set_difference( - active_auth.begin(), - active_auth.end(), - gpo.active_producers.begin(), - gpo.active_producers.end(), - std::inserter(diff, diff.begin()) - ); - - BOOST_CHECK_EQUAL(diff.size(), 0); - - const auto& producers_owner_authority = chain_db.get(boost::make_tuple(config::producers_account_name, config::owner_name)); - BOOST_CHECK_EQUAL(producers_owner_authority.auth.threshold, 0); - BOOST_CHECK_EQUAL(producers_owner_authority.auth.accounts.size(), 0); - BOOST_CHECK_EQUAL(producers_owner_authority.auth.keys.size(), 0); - -} FC_LOG_AND_RETHROW() } - -//Check correct authority when new set of producers are elected -BOOST_FIXTURE_TEST_CASE(producers_authority, testing_fixture) -{ try { - - Make_Blockchain(chain) - - Make_Account(chain, alice); - Make_Account(chain, bob); - Make_Account(chain, charlie); - - Make_Account(chain, newproducer1); - Make_Account(chain, newproducer2); - Make_Account(chain, newproducer3); - chain.produce_blocks(); - - Make_Producer(chain, newproducer1); - Make_Producer(chain, newproducer2); - Make_Producer(chain, newproducer3); - - Approve_Producer(chain, alice, newproducer1, true); - Approve_Producer(chain, bob, newproducer2, true); - Approve_Producer(chain, charlie, newproducer3, true); - - chain.produce_blocks(config::blocks_per_round - chain.head_block_num() ); - - auto& gpo = chain_db.get(); - - BOOST_REQUIRE(boost::find(gpo.active_producers, "newproducer1") != gpo.active_producers.end()); - BOOST_REQUIRE(boost::find(gpo.active_producers, "newproducer2") != gpo.active_producers.end()); - BOOST_REQUIRE(boost::find(gpo.active_producers, "newproducer3") != gpo.active_producers.end()); - - const auto& producers_active_authority = chain_db.get(boost::make_tuple(config::producers_account_name, config::active_name)); - BOOST_CHECK_EQUAL(producers_active_authority.auth.threshold, config::producers_authority_threshold); - BOOST_CHECK_EQUAL(producers_active_authority.auth.accounts.size(), gpo.active_producers.size()); - BOOST_CHECK_EQUAL(producers_active_authority.auth.keys.size(), 0); - - std::vector active_auth; - for(auto& apw : producers_active_authority.auth.accounts) { - active_auth.emplace_back(apw.permission.account); - } - - std::vector diff; - std::set_difference( - active_auth.begin(), - active_auth.end(), - gpo.active_producers.begin(), - gpo.active_producers.end(), - std::inserter(diff, diff.begin()) - ); - - BOOST_CHECK_EQUAL(diff.size(), 0); - - const auto& producers_owner_authority = chain_db.get(boost::make_tuple(config::producers_account_name, config::owner_name)); - BOOST_CHECK_EQUAL(producers_owner_authority.auth.threshold, 0); - BOOST_CHECK_EQUAL(producers_owner_authority.auth.accounts.size(), 0); - BOOST_CHECK_EQUAL(producers_owner_authority.auth.keys.size(), 0); - -} FC_LOG_AND_RETHROW() } - - -BOOST_AUTO_TEST_SUITE_END() diff --git a/tests/trans_sync_across_mixed_cluster_test.sh b/tests/trans_sync_across_mixed_cluster_test.sh index d9158a8ef0a8685cb7e47e1d76cd0a492f63378a..68b6834c1c23ff792835c45e87d7e415e132e7ba 100755 --- a/tests/trans_sync_across_mixed_cluster_test.sh +++ b/tests/trans_sync_across_mixed_cluster_test.sh @@ -78,8 +78,8 @@ cleanup() # result stored in HEAD_BLOCK_NUM getHeadBlockNum() { - INFO="$(programs/eosioc/eosioc get info)" - verifyErrorCode "eosioc get info" + INFO="$(programs/cleos/cleos get info)" + verifyErrorCode "cleos get info" HEAD_BLOCK_NUM="$(echo "$INFO" | awk '/head_block_num/ {print $2}')" # remove trailing coma HEAD_BLOCK_NUM=${HEAD_BLOCK_NUM%,} @@ -110,10 +110,10 @@ INITA_PRV_KEY="5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3" # cleanup from last run cleanup -# stand up eosiod cluster +# stand up nodeos cluster launcherOpts="-p $pnodes -n $total_nodes -s $topo -d $delay" -echo Launcher options: --eosiod \"--plugin eosio::wallet_api_plugin\" $launcherOpts -programs/eosio-launcher/eosio-launcher --eosiod "--plugin eosio::wallet_api_plugin" $launcherOpts +echo Launcher options: --nodeos \"--plugin eosio::wallet_api_plugin\" $launcherOpts +programs/eosio-launcher/eosio-launcher --nodeos "--plugin eosio::wallet_api_plugin" $launcherOpts sleep 7 startPort=8888 @@ -125,22 +125,22 @@ echo endPort: $endPort port2=$startPort while [ $port2 -ne $endport ]; do echo Request block 1 from node on port $port2 - TRANS_INFO="$(programs/eosioc/eosioc --port $port2 get block 1)" - verifyErrorCode "eosioc get block" + TRANS_INFO="$(programs/cleos/cleos --port $port2 get block 1)" + verifyErrorCode "cleos get block" port2=`expr $port2 + 1` done # create 3 keys -KEYS="$(programs/eosioc/eosioc create key)" -verifyErrorCode "eosioc create key" +KEYS="$(programs/cleos/cleos create key)" +verifyErrorCode "cleos create key" PRV_KEY1="$(echo "$KEYS" | awk '/Private/ {print $3}')" PUB_KEY1="$(echo "$KEYS" | awk '/Public/ {print $3}')" -KEYS="$(programs/eosioc/eosioc create key)" -verifyErrorCode "eosioc create key" +KEYS="$(programs/cleos/cleos create key)" +verifyErrorCode "cleos create key" PRV_KEY2="$(echo "$KEYS" | awk '/Private/ {print $3}')" PUB_KEY2="$(echo "$KEYS" | awk '/Public/ {print $3}')" -KEYS="$(programs/eosioc/eosioc create key)" -verifyErrorCode "eosioc create key" +KEYS="$(programs/cleos/cleos create key)" +verifyErrorCode "cleos create key" PRV_KEY3="$(echo "$KEYS" | awk '/Private/ {print $3}')" PUB_KEY3="$(echo "$KEYS" | awk '/Public/ {print $3}')" if [ -z "$PRV_KEY1" ] || [ -z "$PRV_KEY2" ] || [ -z "$PRV_KEY3" ] || [ -z "$PUB_KEY1" ] || [ -z "$PUB_KEY2" ] || [ -z "$PUB_KEY3" ]; then @@ -149,21 +149,21 @@ fi # create wallet for inita -PASSWORD_INITA="$(programs/eosioc/eosioc wallet create --name inita)" -verifyErrorCode "eosioc wallet create" +PASSWORD_INITA="$(programs/cleos/cleos wallet create --name inita)" +verifyErrorCode "cleos wallet create" # strip out password from output PASSWORD_INITA="$(echo "$PASSWORD_INITA" | awk '/PW/ {print $1}')" # remove leading/trailing quotes PASSWORD_INITA=${PASSWORD_INITA#\"} PASSWORD_INITA=${PASSWORD_INITA%\"} -programs/eosioc/eosioc wallet import --name inita $INITA_PRV_KEY -verifyErrorCode "eosioc wallet import" -programs/eosioc/eosioc wallet import --name inita $PRV_KEY1 -verifyErrorCode "eosioc wallet import" -programs/eosioc/eosioc wallet import --name inita $PRV_KEY2 -verifyErrorCode "eosioc wallet import" -programs/eosioc/eosioc wallet import --name inita $PRV_KEY3 -verifyErrorCode "eosioc wallet import" +programs/cleos/cleos wallet import --name inita $INITA_PRV_KEY +verifyErrorCode "cleos wallet import" +programs/cleos/cleos wallet import --name inita $PRV_KEY1 +verifyErrorCode "cleos wallet import" +programs/cleos/cleos wallet import --name inita $PRV_KEY2 +verifyErrorCode "cleos wallet import" +programs/cleos/cleos wallet import --name inita $PRV_KEY3 +verifyErrorCode "cleos wallet import" # # Account and Transfer Tests @@ -171,12 +171,12 @@ verifyErrorCode "eosioc wallet import" # create new account echo Creating account testera -ACCOUNT_INFO="$(programs/eosioc/eosioc create account inita testera $PUB_KEY1 $PUB_KEY3)" -verifyErrorCode "eosioc create account" +ACCOUNT_INFO="$(programs/cleos/cleos create account inita testera $PUB_KEY1 $PUB_KEY3)" +verifyErrorCode "cleos create account" waitForNextBlock # verify account created -ACCOUNT_INFO="$(programs/eosioc/eosioc get account testera)" -verifyErrorCode "eosioc get account" +ACCOUNT_INFO="$(programs/cleos/cleos get account testera)" +verifyErrorCode "cleos get account" count=`echo $ACCOUNT_INFO | grep -c "staked_balance"` if [ $count == 0 ]; then error "FAILURE - account creation failed: $ACCOUNT_INFO" @@ -188,8 +188,8 @@ echo Producing node port: $pPort while [ $port -ne $endport ]; do echo Sending transfer request to node on port $port. - TRANSFER_INFO="$(programs/eosioc/eosioc transfer inita testera 975321 "test transfer")" - verifyErrorCode "eosioc transfer" + TRANSFER_INFO="$(programs/cleos/cleos transfer inita testera 975321 "test transfer")" + verifyErrorCode "cleos transfer" getTransactionId "$TRANSFER_INFO" echo Transaction id: $TRANS_ID @@ -199,8 +199,8 @@ while [ $port -ne $endport ]; do port2=$startPort while [ $port2 -ne $endport ]; do echo Verifying transaction exists on node on port $port2 - TRANS_INFO="$(programs/eosioc/eosioc --port $port2 get transaction $TRANS_ID)" - verifyErrorCode "eosioc get transaction trans_id of <$TRANS_INFO> from node on port $port2" + TRANS_INFO="$(programs/cleos/cleos --port $port2 get transaction $TRANS_ID)" + verifyErrorCode "cleos get transaction trans_id of <$TRANS_INFO> from node on port $port2" port2=`expr $port2 + 1` done diff --git a/tests/wasm_tests/test_softfloat_wasts.hpp b/tests/wasm_tests/test_softfloat_wasts.hpp new file mode 100644 index 0000000000000000000000000000000000000000..90afadd58f34b112c5903ca5e483ab9ed5d31eb1 --- /dev/null +++ b/tests/wasm_tests/test_softfloat_wasts.hpp @@ -0,0 +1,21604 @@ +#pragma once + +static const char f32_test_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (data (i32.const 292) "69") + (data (i32.const 296) "70") + (data (i32.const 300) "71") + (data (i32.const 304) "72") + (data (i32.const 308) "73") + (data (i32.const 312) "74") + (data (i32.const 316) "75") + (data (i32.const 320) "76") + (data (i32.const 324) "77") + (data (i32.const 328) "78") + (data (i32.const 332) "79") + (data (i32.const 336) "80") + (data (i32.const 340) "81") + (data (i32.const 344) "82") + (data (i32.const 348) "83") + (data (i32.const 352) "84") + (data (i32.const 356) "85") + (data (i32.const 360) "86") + (data (i32.const 364) "87") + (data (i32.const 368) "88") + (data (i32.const 372) "89") + (data (i32.const 376) "90") + (data (i32.const 380) "91") + (data (i32.const 384) "92") + (data (i32.const 388) "93") + (data (i32.const 392) "94") + (data (i32.const 396) "95") + (data (i32.const 400) "96") + (data (i32.const 404) "97") + (data (i32.const 408) "98") + (data (i32.const 412) "99") + (data (i32.const 416) "100") + (data (i32.const 420) "101") + (data (i32.const 424) "102") + (data (i32.const 428) "103") + (data (i32.const 432) "104") + (data (i32.const 436) "105") + (data (i32.const 440) "106") + (data (i32.const 444) "107") + (data (i32.const 448) "108") + (data (i32.const 452) "109") + (data (i32.const 456) "110") + (data (i32.const 460) "111") + (data (i32.const 464) "112") + (data (i32.const 468) "113") + (data (i32.const 472) "114") + (data (i32.const 476) "115") + (data (i32.const 480) "116") + (data (i32.const 484) "117") + (data (i32.const 488) "118") + (data (i32.const 492) "119") + (data (i32.const 496) "120") + (data (i32.const 500) "121") + (data (i32.const 504) "122") + (data (i32.const 508) "123") + (data (i32.const 512) "124") + (data (i32.const 516) "125") + (data (i32.const 520) "126") + (data (i32.const 524) "127") + (data (i32.const 528) "128") + (data (i32.const 532) "129") + (data (i32.const 536) "130") + (data (i32.const 540) "131") + (data (i32.const 544) "132") + (data (i32.const 548) "133") + (data (i32.const 552) "134") + (data (i32.const 556) "135") + (data (i32.const 560) "136") + (data (i32.const 564) "137") + (data (i32.const 568) "138") + (data (i32.const 572) "139") + (data (i32.const 576) "140") + (data (i32.const 580) "141") + (data (i32.const 584) "142") + (data (i32.const 588) "143") + (data (i32.const 592) "144") + (data (i32.const 596) "145") + (data (i32.const 600) "146") + (data (i32.const 604) "147") + (data (i32.const 608) "148") + (data (i32.const 612) "149") + (data (i32.const 616) "150") + (data (i32.const 620) "151") + (data (i32.const 624) "152") + (data (i32.const 628) "153") + (data (i32.const 632) "154") + (data (i32.const 636) "155") + (data (i32.const 640) "156") + (data (i32.const 644) "157") + (data (i32.const 648) "158") + (data (i32.const 652) "159") + (data (i32.const 656) "160") + (data (i32.const 660) "161") + (data (i32.const 664) "162") + (data (i32.const 668) "163") + (data (i32.const 672) "164") + (data (i32.const 676) "165") + (data (i32.const 680) "166") + (data (i32.const 684) "167") + (data (i32.const 688) "168") + (data (i32.const 692) "169") + (data (i32.const 696) "170") + (data (i32.const 700) "171") + (data (i32.const 704) "172") + (data (i32.const 708) "173") + (data (i32.const 712) "174") + (data (i32.const 716) "175") + (data (i32.const 720) "176") + (data (i32.const 724) "177") + (data (i32.const 728) "178") + (data (i32.const 732) "179") + (data (i32.const 736) "180") + (data (i32.const 740) "181") + (data (i32.const 744) "182") + (data (i32.const 748) "183") + (data (i32.const 752) "184") + (data (i32.const 756) "185") + (data (i32.const 760) "186") + (data (i32.const 764) "187") + (data (i32.const 768) "188") + (data (i32.const 772) "189") + (data (i32.const 776) "190") + (data (i32.const 780) "191") + (data (i32.const 784) "192") + (data (i32.const 788) "193") + (data (i32.const 792) "194") + (data (i32.const 796) "195") + (data (i32.const 800) "196") + (data (i32.const 804) "197") + (data (i32.const 808) "198") + (data (i32.const 812) "199") + (data (i32.const 816) "200") + (data (i32.const 820) "201") + (data (i32.const 824) "202") + (data (i32.const 828) "203") + (data (i32.const 832) "204") + (data (i32.const 836) "205") + (data (i32.const 840) "206") + (data (i32.const 844) "207") + (data (i32.const 848) "208") + (data (i32.const 852) "209") + (data (i32.const 856) "210") + (data (i32.const 860) "211") + (data (i32.const 864) "212") + (data (i32.const 868) "213") + (data (i32.const 872) "214") + (data (i32.const 876) "215") + (data (i32.const 880) "216") + (data (i32.const 884) "217") + (data (i32.const 888) "218") + (data (i32.const 892) "219") + (data (i32.const 896) "220") + (data (i32.const 900) "221") + (data (i32.const 904) "222") + (data (i32.const 908) "223") + (data (i32.const 912) "224") + (data (i32.const 916) "225") + (data (i32.const 920) "226") + (data (i32.const 924) "227") + (data (i32.const 928) "228") + (data (i32.const 932) "229") + (data (i32.const 936) "230") + (data (i32.const 940) "231") + (data (i32.const 944) "232") + (data (i32.const 948) "233") + (data (i32.const 952) "234") + (data (i32.const 956) "235") + (data (i32.const 960) "236") + (data (i32.const 964) "237") + (data (i32.const 968) "238") + (data (i32.const 972) "239") + (data (i32.const 976) "240") + (data (i32.const 980) "241") + (data (i32.const 984) "242") + (data (i32.const 988) "243") + (data (i32.const 992) "244") + (data (i32.const 996) "245") + (data (i32.const 1000) "246") + (data (i32.const 1004) "247") + (data (i32.const 1008) "248") + (data (i32.const 1012) "249") + (data (i32.const 1016) "250") + (data (i32.const 1020) "251") + (data (i32.const 1024) "252") + (data (i32.const 1028) "253") + (data (i32.const 1032) "254") + (data (i32.const 1036) "255") + (data (i32.const 1040) "256") + (data (i32.const 1044) "257") + (data (i32.const 1048) "258") + (data (i32.const 1052) "259") + (data (i32.const 1056) "260") + (data (i32.const 1060) "261") + (data (i32.const 1064) "262") + (data (i32.const 1068) "263") + (data (i32.const 1072) "264") + (data (i32.const 1076) "265") + (data (i32.const 1080) "266") + (data (i32.const 1084) "267") + (data (i32.const 1088) "268") + (data (i32.const 1092) "269") + (data (i32.const 1096) "270") + (data (i32.const 1100) "271") + (data (i32.const 1104) "272") + (data (i32.const 1108) "273") + (data (i32.const 1112) "274") + (data (i32.const 1116) "275") + (data (i32.const 1120) "276") + (data (i32.const 1124) "277") + (data (i32.const 1128) "278") + (data (i32.const 1132) "279") + (data (i32.const 1136) "280") + (data (i32.const 1140) "281") + (data (i32.const 1144) "282") + (data (i32.const 1148) "283") + (data (i32.const 1152) "284") + (data (i32.const 1156) "285") + (data (i32.const 1160) "286") + (data (i32.const 1164) "287") + (data (i32.const 1168) "288") + (data (i32.const 1172) "289") + (data (i32.const 1176) "290") + (data (i32.const 1180) "291") + (data (i32.const 1184) "292") + (data (i32.const 1188) "293") + (data (i32.const 1192) "294") + (data (i32.const 1196) "295") + (data (i32.const 1200) "296") + (data (i32.const 1204) "297") + (data (i32.const 1208) "298") + (data (i32.const 1212) "299") + (data (i32.const 1216) "300") + (data (i32.const 1220) "301") + (data (i32.const 1224) "302") + (data (i32.const 1228) "303") + (data (i32.const 1232) "304") + (data (i32.const 1236) "305") + (data (i32.const 1240) "306") + (data (i32.const 1244) "307") + (data (i32.const 1248) "308") + (data (i32.const 1252) "309") + (data (i32.const 1256) "310") + (data (i32.const 1260) "311") + (data (i32.const 1264) "312") + (data (i32.const 1268) "313") + (data (i32.const 1272) "314") + (data (i32.const 1276) "315") + (data (i32.const 1280) "316") + (data (i32.const 1284) "317") + (data (i32.const 1288) "318") + (data (i32.const 1292) "319") + (data (i32.const 1296) "320") + (data (i32.const 1300) "321") + (data (i32.const 1304) "322") + (data (i32.const 1308) "323") + (data (i32.const 1312) "324") + (data (i32.const 1316) "325") + (data (i32.const 1320) "326") + (data (i32.const 1324) "327") + (data (i32.const 1328) "328") + (data (i32.const 1332) "329") + (data (i32.const 1336) "330") + (data (i32.const 1340) "331") + (data (i32.const 1344) "332") + (data (i32.const 1348) "333") + (data (i32.const 1352) "334") + (data (i32.const 1356) "335") + (data (i32.const 1360) "336") + (data (i32.const 1364) "337") + (data (i32.const 1368) "338") + (data (i32.const 1372) "339") + (data (i32.const 1376) "340") + (data (i32.const 1380) "341") + (data (i32.const 1384) "342") + (data (i32.const 1388) "343") + (data (i32.const 1392) "344") + (data (i32.const 1396) "345") + (data (i32.const 1400) "346") + (data (i32.const 1404) "347") + (data (i32.const 1408) "348") + (data (i32.const 1412) "349") + (data (i32.const 1416) "350") + (data (i32.const 1420) "351") + (data (i32.const 1424) "352") + (data (i32.const 1428) "353") + (data (i32.const 1432) "354") + (data (i32.const 1436) "355") + (data (i32.const 1440) "356") + (data (i32.const 1444) "357") + (data (i32.const 1448) "358") + (data (i32.const 1452) "359") + (data (i32.const 1456) "360") + (data (i32.const 1460) "361") + (data (i32.const 1464) "362") + (data (i32.const 1468) "363") + (data (i32.const 1472) "364") + (data (i32.const 1476) "365") + (data (i32.const 1480) "366") + (data (i32.const 1484) "367") + (data (i32.const 1488) "368") + (data (i32.const 1492) "369") + (data (i32.const 1496) "370") + (data (i32.const 1500) "371") + (data (i32.const 1504) "372") + (data (i32.const 1508) "373") + (data (i32.const 1512) "374") + (data (i32.const 1516) "375") + (data (i32.const 1520) "376") + (data (i32.const 1524) "377") + (data (i32.const 1528) "378") + (data (i32.const 1532) "379") + (data (i32.const 1536) "380") + (data (i32.const 1540) "381") + (data (i32.const 1544) "382") + (data (i32.const 1548) "383") + (data (i32.const 1552) "384") + (data (i32.const 1556) "385") + (data (i32.const 1560) "386") + (data (i32.const 1564) "387") + (data (i32.const 1568) "388") + (data (i32.const 1572) "389") + (data (i32.const 1576) "390") + (data (i32.const 1580) "391") + (data (i32.const 1584) "392") + (data (i32.const 1588) "393") + (data (i32.const 1592) "394") + (data (i32.const 1596) "395") + (data (i32.const 1600) "396") + (data (i32.const 1604) "397") + (data (i32.const 1608) "398") + (data (i32.const 1612) "399") + (data (i32.const 1616) "400") + (data (i32.const 1620) "401") + (data (i32.const 1624) "402") + (data (i32.const 1628) "403") + (data (i32.const 1632) "404") + (data (i32.const 1636) "405") + (data (i32.const 1640) "406") + (data (i32.const 1644) "407") + (data (i32.const 1648) "408") + (data (i32.const 1652) "409") + (data (i32.const 1656) "410") + (data (i32.const 1660) "411") + (data (i32.const 1664) "412") + (data (i32.const 1668) "413") + (data (i32.const 1672) "414") + (data (i32.const 1676) "415") + (data (i32.const 1680) "416") + (data (i32.const 1684) "417") + (data (i32.const 1688) "418") + (data (i32.const 1692) "419") + (data (i32.const 1696) "420") + (data (i32.const 1700) "421") + (data (i32.const 1704) "422") + (data (i32.const 1708) "423") + (data (i32.const 1712) "424") + (data (i32.const 1716) "425") + (data (i32.const 1720) "426") + (data (i32.const 1724) "427") + (data (i32.const 1728) "428") + (data (i32.const 1732) "429") + (data (i32.const 1736) "430") + (data (i32.const 1740) "431") + (data (i32.const 1744) "432") + (data (i32.const 1748) "433") + (data (i32.const 1752) "434") + (data (i32.const 1756) "435") + (data (i32.const 1760) "436") + (data (i32.const 1764) "437") + (data (i32.const 1768) "438") + (data (i32.const 1772) "439") + (data (i32.const 1776) "440") + (data (i32.const 1780) "441") + (data (i32.const 1784) "442") + (data (i32.const 1788) "443") + (data (i32.const 1792) "444") + (data (i32.const 1796) "445") + (data (i32.const 1800) "446") + (data (i32.const 1804) "447") + (data (i32.const 1808) "448") + (data (i32.const 1812) "449") + (data (i32.const 1816) "450") + (data (i32.const 1820) "451") + (data (i32.const 1824) "452") + (data (i32.const 1828) "453") + (data (i32.const 1832) "454") + (data (i32.const 1836) "455") + (data (i32.const 1840) "456") + (data (i32.const 1844) "457") + (data (i32.const 1848) "458") + (data (i32.const 1852) "459") + (data (i32.const 1856) "460") + (data (i32.const 1860) "461") + (data (i32.const 1864) "462") + (data (i32.const 1868) "463") + (data (i32.const 1872) "464") + (data (i32.const 1876) "465") + (data (i32.const 1880) "466") + (data (i32.const 1884) "467") + (data (i32.const 1888) "468") + (data (i32.const 1892) "469") + (data (i32.const 1896) "470") + (data (i32.const 1900) "471") + (data (i32.const 1904) "472") + (data (i32.const 1908) "473") + (data (i32.const 1912) "474") + (data (i32.const 1916) "475") + (data (i32.const 1920) "476") + (data (i32.const 1924) "477") + (data (i32.const 1928) "478") + (data (i32.const 1932) "479") + (data (i32.const 1936) "480") + (data (i32.const 1940) "481") + (data (i32.const 1944) "482") + (data (i32.const 1948) "483") + (data (i32.const 1952) "484") + (data (i32.const 1956) "485") + (data (i32.const 1960) "486") + (data (i32.const 1964) "487") + (data (i32.const 1968) "488") + (data (i32.const 1972) "489") + (data (i32.const 1976) "490") + (data (i32.const 1980) "491") + (data (i32.const 1984) "492") + (data (i32.const 1988) "493") + (data (i32.const 1992) "494") + (data (i32.const 1996) "495") + (data (i32.const 2000) "496") + (data (i32.const 2004) "497") + (data (i32.const 2008) "498") + (data (i32.const 2012) "499") + (data (i32.const 2016) "500") + (data (i32.const 2020) "501") + (data (i32.const 2024) "502") + (data (i32.const 2028) "503") + (data (i32.const 2032) "504") + (data (i32.const 2036) "505") + (data (i32.const 2040) "506") + (data (i32.const 2044) "507") + (data (i32.const 2048) "508") + (data (i32.const 2052) "509") + (data (i32.const 2056) "510") + (data (i32.const 2060) "511") + (data (i32.const 2064) "512") + (data (i32.const 2068) "513") + (data (i32.const 2072) "514") + (data (i32.const 2076) "515") + (data (i32.const 2080) "516") + (data (i32.const 2084) "517") + (data (i32.const 2088) "518") + (data (i32.const 2092) "519") + (data (i32.const 2096) "520") + (data (i32.const 2100) "521") + (data (i32.const 2104) "522") + (data (i32.const 2108) "523") + (data (i32.const 2112) "524") + (data (i32.const 2116) "525") + (data (i32.const 2120) "526") + (data (i32.const 2124) "527") + (data (i32.const 2128) "528") + (data (i32.const 2132) "529") + (data (i32.const 2136) "530") + (data (i32.const 2140) "531") + (data (i32.const 2144) "532") + (data (i32.const 2148) "533") + (data (i32.const 2152) "534") + (data (i32.const 2156) "535") + (data (i32.const 2160) "536") + (data (i32.const 2164) "537") + (data (i32.const 2168) "538") + (data (i32.const 2172) "539") + (data (i32.const 2176) "540") + (data (i32.const 2180) "541") + (data (i32.const 2184) "542") + (data (i32.const 2188) "543") + (data (i32.const 2192) "544") + (data (i32.const 2196) "545") + (data (i32.const 2200) "546") + (data (i32.const 2204) "547") + (data (i32.const 2208) "548") + (data (i32.const 2212) "549") + (data (i32.const 2216) "550") + (data (i32.const 2220) "551") + (data (i32.const 2224) "552") + (data (i32.const 2228) "553") + (data (i32.const 2232) "554") + (data (i32.const 2236) "555") + (data (i32.const 2240) "556") + (data (i32.const 2244) "557") + (data (i32.const 2248) "558") + (data (i32.const 2252) "559") + (data (i32.const 2256) "560") + (data (i32.const 2260) "561") + (data (i32.const 2264) "562") + (data (i32.const 2268) "563") + (data (i32.const 2272) "564") + (data (i32.const 2276) "565") + (data (i32.const 2280) "566") + (data (i32.const 2284) "567") + (data (i32.const 2288) "568") + (data (i32.const 2292) "569") + (data (i32.const 2296) "570") + (data (i32.const 2300) "571") + (data (i32.const 2304) "572") + (data (i32.const 2308) "573") + (data (i32.const 2312) "574") + (data (i32.const 2316) "575") + (data (i32.const 2320) "576") + (data (i32.const 2324) "577") + (data (i32.const 2328) "578") + (data (i32.const 2332) "579") + (data (i32.const 2336) "580") + (data (i32.const 2340) "581") + (data (i32.const 2344) "582") + (data (i32.const 2348) "583") + (data (i32.const 2352) "584") + (data (i32.const 2356) "585") + (data (i32.const 2360) "586") + (data (i32.const 2364) "587") + (data (i32.const 2368) "588") + (data (i32.const 2372) "589") + (data (i32.const 2376) "590") + (data (i32.const 2380) "591") + (data (i32.const 2384) "592") + (data (i32.const 2388) "593") + (data (i32.const 2392) "594") + (data (i32.const 2396) "595") + (data (i32.const 2400) "596") + (data (i32.const 2404) "597") + (data (i32.const 2408) "598") + (data (i32.const 2412) "599") + (data (i32.const 2416) "600") + (data (i32.const 2420) "601") + (data (i32.const 2424) "602") + (data (i32.const 2428) "603") + (data (i32.const 2432) "604") + (data (i32.const 2436) "605") + (data (i32.const 2440) "606") + (data (i32.const 2444) "607") + (data (i32.const 2448) "608") + (data (i32.const 2452) "609") + (data (i32.const 2456) "610") + (data (i32.const 2460) "611") + (data (i32.const 2464) "612") + (data (i32.const 2468) "613") + (data (i32.const 2472) "614") + (data (i32.const 2476) "615") + (data (i32.const 2480) "616") + (data (i32.const 2484) "617") + (data (i32.const 2488) "618") + (data (i32.const 2492) "619") + (data (i32.const 2496) "620") + (data (i32.const 2500) "621") + (data (i32.const 2504) "622") + (data (i32.const 2508) "623") + (data (i32.const 2512) "624") + (data (i32.const 2516) "625") + (data (i32.const 2520) "626") + (data (i32.const 2524) "627") + (data (i32.const 2528) "628") + (data (i32.const 2532) "629") + (data (i32.const 2536) "630") + (data (i32.const 2540) "631") + (data (i32.const 2544) "632") + (data (i32.const 2548) "633") + (data (i32.const 2552) "634") + (data (i32.const 2556) "635") + (data (i32.const 2560) "636") + (data (i32.const 2564) "637") + (data (i32.const 2568) "638") + (data (i32.const 2572) "639") + (data (i32.const 2576) "640") + (data (i32.const 2580) "641") + (data (i32.const 2584) "642") + (data (i32.const 2588) "643") + (data (i32.const 2592) "644") + (data (i32.const 2596) "645") + (data (i32.const 2600) "646") + (data (i32.const 2604) "647") + (data (i32.const 2608) "648") + (data (i32.const 2612) "649") + (data (i32.const 2616) "650") + (data (i32.const 2620) "651") + (data (i32.const 2624) "652") + (data (i32.const 2628) "653") + (data (i32.const 2632) "654") + (data (i32.const 2636) "655") + (data (i32.const 2640) "656") + (data (i32.const 2644) "657") + (data (i32.const 2648) "658") + (data (i32.const 2652) "659") + (data (i32.const 2656) "660") + (data (i32.const 2660) "661") + (data (i32.const 2664) "662") + (data (i32.const 2668) "663") + (data (i32.const 2672) "664") + (data (i32.const 2676) "665") + (data (i32.const 2680) "666") + (data (i32.const 2684) "667") + (data (i32.const 2688) "668") + (data (i32.const 2692) "669") + (data (i32.const 2696) "670") + (data (i32.const 2700) "671") + (data (i32.const 2704) "672") + (data (i32.const 2708) "673") + (data (i32.const 2712) "674") + (data (i32.const 2716) "675") + (data (i32.const 2720) "676") + (data (i32.const 2724) "677") + (data (i32.const 2728) "678") + (data (i32.const 2732) "679") + (data (i32.const 2736) "680") + (data (i32.const 2740) "681") + (data (i32.const 2744) "682") + (data (i32.const 2748) "683") + (data (i32.const 2752) "684") + (data (i32.const 2756) "685") + (data (i32.const 2760) "686") + (data (i32.const 2764) "687") + (data (i32.const 2768) "688") + (data (i32.const 2772) "689") + (data (i32.const 2776) "690") + (data (i32.const 2780) "691") + (data (i32.const 2784) "692") + (data (i32.const 2788) "693") + (data (i32.const 2792) "694") + (data (i32.const 2796) "695") + (data (i32.const 2800) "696") + (data (i32.const 2804) "697") + (data (i32.const 2808) "698") + (data (i32.const 2812) "699") + (data (i32.const 2816) "700") + (data (i32.const 2820) "701") + (data (i32.const 2824) "702") + (data (i32.const 2828) "703") + (data (i32.const 2832) "704") + (data (i32.const 2836) "705") + (data (i32.const 2840) "706") + (data (i32.const 2844) "707") + (data (i32.const 2848) "708") + (data (i32.const 2852) "709") + (data (i32.const 2856) "710") + (data (i32.const 2860) "711") + (data (i32.const 2864) "712") + (data (i32.const 2868) "713") + (data (i32.const 2872) "714") + (data (i32.const 2876) "715") + (data (i32.const 2880) "716") + (data (i32.const 2884) "717") + (data (i32.const 2888) "718") + (data (i32.const 2892) "719") + (data (i32.const 2896) "720") + (data (i32.const 2900) "721") + (data (i32.const 2904) "722") + (data (i32.const 2908) "723") + (data (i32.const 2912) "724") + (data (i32.const 2916) "725") + (data (i32.const 2920) "726") + (data (i32.const 2924) "727") + (data (i32.const 2928) "728") + (data (i32.const 2932) "729") + (data (i32.const 2936) "730") + (data (i32.const 2940) "731") + (data (i32.const 2944) "732") + (data (i32.const 2948) "733") + (data (i32.const 2952) "734") + (data (i32.const 2956) "735") + (data (i32.const 2960) "736") + (data (i32.const 2964) "737") + (data (i32.const 2968) "738") + (data (i32.const 2972) "739") + (data (i32.const 2976) "740") + (data (i32.const 2980) "741") + (data (i32.const 2984) "742") + (data (i32.const 2988) "743") + (data (i32.const 2992) "744") + (data (i32.const 2996) "745") + (data (i32.const 3000) "746") + (data (i32.const 3004) "747") + (data (i32.const 3008) "748") + (data (i32.const 3012) "749") + (data (i32.const 3016) "750") + (data (i32.const 3020) "751") + (data (i32.const 3024) "752") + (data (i32.const 3028) "753") + (data (i32.const 3032) "754") + (data (i32.const 3036) "755") + (data (i32.const 3040) "756") + (data (i32.const 3044) "757") + (data (i32.const 3048) "758") + (data (i32.const 3052) "759") + (data (i32.const 3056) "760") + (data (i32.const 3060) "761") + (data (i32.const 3064) "762") + (data (i32.const 3068) "763") + (data (i32.const 3072) "764") + (data (i32.const 3076) "765") + (data (i32.const 3080) "766") + (data (i32.const 3084) "767") + (data (i32.const 3088) "768") + (data (i32.const 3092) "769") + (data (i32.const 3096) "770") + (data (i32.const 3100) "771") + (data (i32.const 3104) "772") + (data (i32.const 3108) "773") + (data (i32.const 3112) "774") + (data (i32.const 3116) "775") + (data (i32.const 3120) "776") + (data (i32.const 3124) "777") + (data (i32.const 3128) "778") + (data (i32.const 3132) "779") + (data (i32.const 3136) "780") + (data (i32.const 3140) "781") + (data (i32.const 3144) "782") + (data (i32.const 3148) "783") + (data (i32.const 3152) "784") + (data (i32.const 3156) "785") + (data (i32.const 3160) "786") + (data (i32.const 3164) "787") + (data (i32.const 3168) "788") + (data (i32.const 3172) "789") + (data (i32.const 3176) "790") + (data (i32.const 3180) "791") + (data (i32.const 3184) "792") + (data (i32.const 3188) "793") + (data (i32.const 3192) "794") + (data (i32.const 3196) "795") + (data (i32.const 3200) "796") + (data (i32.const 3204) "797") + (data (i32.const 3208) "798") + (data (i32.const 3212) "799") + (data (i32.const 3216) "800") + (data (i32.const 3220) "801") + (data (i32.const 3224) "802") + (data (i32.const 3228) "803") + (data (i32.const 3232) "804") + (data (i32.const 3236) "805") + (data (i32.const 3240) "806") + (data (i32.const 3244) "807") + (data (i32.const 3248) "808") + (data (i32.const 3252) "809") + (data (i32.const 3256) "810") + (data (i32.const 3260) "811") + (data (i32.const 3264) "812") + (data (i32.const 3268) "813") + (data (i32.const 3272) "814") + (data (i32.const 3276) "815") + (data (i32.const 3280) "816") + (data (i32.const 3284) "817") + (data (i32.const 3288) "818") + (data (i32.const 3292) "819") + (data (i32.const 3296) "820") + (data (i32.const 3300) "821") + (data (i32.const 3304) "822") + (data (i32.const 3308) "823") + (data (i32.const 3312) "824") + (data (i32.const 3316) "825") + (data (i32.const 3320) "826") + (data (i32.const 3324) "827") + (data (i32.const 3328) "828") + (data (i32.const 3332) "829") + (data (i32.const 3336) "830") + (data (i32.const 3340) "831") + (data (i32.const 3344) "832") + (data (i32.const 3348) "833") + (data (i32.const 3352) "834") + (data (i32.const 3356) "835") + (data (i32.const 3360) "836") + (data (i32.const 3364) "837") + (data (i32.const 3368) "838") + (data (i32.const 3372) "839") + (data (i32.const 3376) "840") + (data (i32.const 3380) "841") + (data (i32.const 3384) "842") + (data (i32.const 3388) "843") + (data (i32.const 3392) "844") + (data (i32.const 3396) "845") + (data (i32.const 3400) "846") + (data (i32.const 3404) "847") + (data (i32.const 3408) "848") + (data (i32.const 3412) "849") + (data (i32.const 3416) "850") + (data (i32.const 3420) "851") + (data (i32.const 3424) "852") + (data (i32.const 3428) "853") + (data (i32.const 3432) "854") + (data (i32.const 3436) "855") + (data (i32.const 3440) "856") + (data (i32.const 3444) "857") + (data (i32.const 3448) "858") + (data (i32.const 3452) "859") + (data (i32.const 3456) "860") + (data (i32.const 3460) "861") + (data (i32.const 3464) "862") + (data (i32.const 3468) "863") + (data (i32.const 3472) "864") + (data (i32.const 3476) "865") + (data (i32.const 3480) "866") + (data (i32.const 3484) "867") + (data (i32.const 3488) "868") + (data (i32.const 3492) "869") + (data (i32.const 3496) "870") + (data (i32.const 3500) "871") + (data (i32.const 3504) "872") + (data (i32.const 3508) "873") + (data (i32.const 3512) "874") + (data (i32.const 3516) "875") + (data (i32.const 3520) "876") + (data (i32.const 3524) "877") + (data (i32.const 3528) "878") + (data (i32.const 3532) "879") + (data (i32.const 3536) "880") + (data (i32.const 3540) "881") + (data (i32.const 3544) "882") + (data (i32.const 3548) "883") + (data (i32.const 3552) "884") + (data (i32.const 3556) "885") + (data (i32.const 3560) "886") + (data (i32.const 3564) "887") + (data (i32.const 3568) "888") + (data (i32.const 3572) "889") + (data (i32.const 3576) "890") + (data (i32.const 3580) "891") + (data (i32.const 3584) "892") + (data (i32.const 3588) "893") + (data (i32.const 3592) "894") + (data (i32.const 3596) "895") + (data (i32.const 3600) "896") + (data (i32.const 3604) "897") + (data (i32.const 3608) "898") + (data (i32.const 3612) "899") + (data (i32.const 3616) "900") + (data (i32.const 3620) "901") + (data (i32.const 3624) "902") + (data (i32.const 3628) "903") + (data (i32.const 3632) "904") + (data (i32.const 3636) "905") + (data (i32.const 3640) "906") + (data (i32.const 3644) "907") + (data (i32.const 3648) "908") + (data (i32.const 3652) "909") + (data (i32.const 3656) "910") + (data (i32.const 3660) "911") + (data (i32.const 3664) "912") + (data (i32.const 3668) "913") + (data (i32.const 3672) "914") + (data (i32.const 3676) "915") + (data (i32.const 3680) "916") + (data (i32.const 3684) "917") + (data (i32.const 3688) "918") + (data (i32.const 3692) "919") + (data (i32.const 3696) "920") + (data (i32.const 3700) "921") + (data (i32.const 3704) "922") + (data (i32.const 3708) "923") + (data (i32.const 3712) "924") + (data (i32.const 3716) "925") + (data (i32.const 3720) "926") + (data (i32.const 3724) "927") + (data (i32.const 3728) "928") + (data (i32.const 3732) "929") + (data (i32.const 3736) "930") + (data (i32.const 3740) "931") + (data (i32.const 3744) "932") + (data (i32.const 3748) "933") + (data (i32.const 3752) "934") + (data (i32.const 3756) "935") + (data (i32.const 3760) "936") + (data (i32.const 3764) "937") + (data (i32.const 3768) "938") + (data (i32.const 3772) "939") + (data (i32.const 3776) "940") + (data (i32.const 3780) "941") + (data (i32.const 3784) "942") + (data (i32.const 3788) "943") + (data (i32.const 3792) "944") + (data (i32.const 3796) "945") + (data (i32.const 3800) "946") + (data (i32.const 3804) "947") + (data (i32.const 3808) "948") + (data (i32.const 3812) "949") + (data (i32.const 3816) "950") + (data (i32.const 3820) "951") + (data (i32.const 3824) "952") + (data (i32.const 3828) "953") + (data (i32.const 3832) "954") + (data (i32.const 3836) "955") + (data (i32.const 3840) "956") + (data (i32.const 3844) "957") + (data (i32.const 3848) "958") + (data (i32.const 3852) "959") + (data (i32.const 3856) "960") + (data (i32.const 3860) "961") + (data (i32.const 3864) "962") + (data (i32.const 3868) "963") + (data (i32.const 3872) "964") + (data (i32.const 3876) "965") + (data (i32.const 3880) "966") + (data (i32.const 3884) "967") + (data (i32.const 3888) "968") + (data (i32.const 3892) "969") + (data (i32.const 3896) "970") + (data (i32.const 3900) "971") + (data (i32.const 3904) "972") + (data (i32.const 3908) "973") + (data (i32.const 3912) "974") + (data (i32.const 3916) "975") + (data (i32.const 3920) "976") + (data (i32.const 3924) "977") + (data (i32.const 3928) "978") + (data (i32.const 3932) "979") + (data (i32.const 3936) "980") + (data (i32.const 3940) "981") + (data (i32.const 3944) "982") + (data (i32.const 3948) "983") + (data (i32.const 3952) "984") + (data (i32.const 3956) "985") + (data (i32.const 3960) "986") + (data (i32.const 3964) "987") + (data (i32.const 3968) "988") + (data (i32.const 3972) "989") + (data (i32.const 3976) "990") + (data (i32.const 3980) "991") + (data (i32.const 3984) "992") + (data (i32.const 3988) "993") + (data (i32.const 3992) "994") + (data (i32.const 3996) "995") + (data (i32.const 4000) "996") + (data (i32.const 4004) "997") + (data (i32.const 4008) "998") + (data (i32.const 4012) "999") + (data (i32.const 4016) "1000") + (data (i32.const 4020) "1001") + (data (i32.const 4024) "1002") + (data (i32.const 4028) "1003") + (data (i32.const 4032) "1004") + (data (i32.const 4036) "1005") + (data (i32.const 4040) "1006") + (data (i32.const 4044) "1007") + (data (i32.const 4048) "1008") + (data (i32.const 4052) "1009") + (data (i32.const 4056) "1010") + (data (i32.const 4060) "1011") + (data (i32.const 4064) "1012") + (data (i32.const 4068) "1013") + (data (i32.const 4072) "1014") + (data (i32.const 4076) "1015") + (data (i32.const 4080) "1016") + (data (i32.const 4084) "1017") + (data (i32.const 4088) "1018") + (data (i32.const 4092) "1019") + (data (i32.const 4096) "1020") + (data (i32.const 4100) "1021") + (data (i32.const 4104) "1022") + (data (i32.const 4108) "1023") + (data (i32.const 4112) "1024") + (data (i32.const 4116) "1025") + (data (i32.const 4120) "1026") + (data (i32.const 4124) "1027") + (data (i32.const 4128) "1028") + (data (i32.const 4132) "1029") + (data (i32.const 4136) "1030") + (data (i32.const 4140) "1031") + (data (i32.const 4144) "1032") + (data (i32.const 4148) "1033") + (data (i32.const 4152) "1034") + (data (i32.const 4156) "1035") + (data (i32.const 4160) "1036") + (data (i32.const 4164) "1037") + (data (i32.const 4168) "1038") + (data (i32.const 4172) "1039") + (data (i32.const 4176) "1040") + (data (i32.const 4180) "1041") + (data (i32.const 4184) "1042") + (data (i32.const 4188) "1043") + (data (i32.const 4192) "1044") + (data (i32.const 4196) "1045") + (data (i32.const 4200) "1046") + (data (i32.const 4204) "1047") + (data (i32.const 4208) "1048") + (data (i32.const 4212) "1049") + (data (i32.const 4216) "1050") + (data (i32.const 4220) "1051") + (data (i32.const 4224) "1052") + (data (i32.const 4228) "1053") + (data (i32.const 4232) "1054") + (data (i32.const 4236) "1055") + (data (i32.const 4240) "1056") + (data (i32.const 4244) "1057") + (data (i32.const 4248) "1058") + (data (i32.const 4252) "1059") + (data (i32.const 4256) "1060") + (data (i32.const 4260) "1061") + (data (i32.const 4264) "1062") + (data (i32.const 4268) "1063") + (data (i32.const 4272) "1064") + (data (i32.const 4276) "1065") + (data (i32.const 4280) "1066") + (data (i32.const 4284) "1067") + (data (i32.const 4288) "1068") + (data (i32.const 4292) "1069") + (data (i32.const 4296) "1070") + (data (i32.const 4300) "1071") + (data (i32.const 4304) "1072") + (data (i32.const 4308) "1073") + (data (i32.const 4312) "1074") + (data (i32.const 4316) "1075") + (data (i32.const 4320) "1076") + (data (i32.const 4324) "1077") + (data (i32.const 4328) "1078") + (data (i32.const 4332) "1079") + (data (i32.const 4336) "1080") + (data (i32.const 4340) "1081") + (data (i32.const 4344) "1082") + (data (i32.const 4348) "1083") + (data (i32.const 4352) "1084") + (data (i32.const 4356) "1085") + (data (i32.const 4360) "1086") + (data (i32.const 4364) "1087") + (data (i32.const 4368) "1088") + (data (i32.const 4372) "1089") + (data (i32.const 4376) "1090") + (data (i32.const 4380) "1091") + (data (i32.const 4384) "1092") + (data (i32.const 4388) "1093") + (data (i32.const 4392) "1094") + (data (i32.const 4396) "1095") + (data (i32.const 4400) "1096") + (data (i32.const 4404) "1097") + (data (i32.const 4408) "1098") + (data (i32.const 4412) "1099") + (data (i32.const 4416) "1100") + (data (i32.const 4420) "1101") + (data (i32.const 4424) "1102") + (data (i32.const 4428) "1103") + (data (i32.const 4432) "1104") + (data (i32.const 4436) "1105") + (data (i32.const 4440) "1106") + (data (i32.const 4444) "1107") + (data (i32.const 4448) "1108") + (data (i32.const 4452) "1109") + (data (i32.const 4456) "1110") + (data (i32.const 4460) "1111") + (data (i32.const 4464) "1112") + (data (i32.const 4468) "1113") + (data (i32.const 4472) "1114") + (data (i32.const 4476) "1115") + (data (i32.const 4480) "1116") + (data (i32.const 4484) "1117") + (data (i32.const 4488) "1118") + (data (i32.const 4492) "1119") + (data (i32.const 4496) "1120") + (data (i32.const 4500) "1121") + (data (i32.const 4504) "1122") + (data (i32.const 4508) "1123") + (data (i32.const 4512) "1124") + (data (i32.const 4516) "1125") + (data (i32.const 4520) "1126") + (data (i32.const 4524) "1127") + (data (i32.const 4528) "1128") + (data (i32.const 4532) "1129") + (data (i32.const 4536) "1130") + (data (i32.const 4540) "1131") + (data (i32.const 4544) "1132") + (data (i32.const 4548) "1133") + (data (i32.const 4552) "1134") + (data (i32.const 4556) "1135") + (data (i32.const 4560) "1136") + (data (i32.const 4564) "1137") + (data (i32.const 4568) "1138") + (data (i32.const 4572) "1139") + (data (i32.const 4576) "1140") + (data (i32.const 4580) "1141") + (data (i32.const 4584) "1142") + (data (i32.const 4588) "1143") + (data (i32.const 4592) "1144") + (data (i32.const 4596) "1145") + (data (i32.const 4600) "1146") + (data (i32.const 4604) "1147") + (data (i32.const 4608) "1148") + (data (i32.const 4612) "1149") + (data (i32.const 4616) "1150") + (data (i32.const 4620) "1151") + (data (i32.const 4624) "1152") + (data (i32.const 4628) "1153") + (data (i32.const 4632) "1154") + (data (i32.const 4636) "1155") + (data (i32.const 4640) "1156") + (data (i32.const 4644) "1157") + (data (i32.const 4648) "1158") + (data (i32.const 4652) "1159") + (data (i32.const 4656) "1160") + (data (i32.const 4660) "1161") + (data (i32.const 4664) "1162") + (data (i32.const 4668) "1163") + (data (i32.const 4672) "1164") + (data (i32.const 4676) "1165") + (data (i32.const 4680) "1166") + (data (i32.const 4684) "1167") + (data (i32.const 4688) "1168") + (data (i32.const 4692) "1169") + (data (i32.const 4696) "1170") + (data (i32.const 4700) "1171") + (data (i32.const 4704) "1172") + (data (i32.const 4708) "1173") + (data (i32.const 4712) "1174") + (data (i32.const 4716) "1175") + (data (i32.const 4720) "1176") + (data (i32.const 4724) "1177") + (data (i32.const 4728) "1178") + (data (i32.const 4732) "1179") + (data (i32.const 4736) "1180") + (data (i32.const 4740) "1181") + (data (i32.const 4744) "1182") + (data (i32.const 4748) "1183") + (data (i32.const 4752) "1184") + (data (i32.const 4756) "1185") + (data (i32.const 4760) "1186") + (data (i32.const 4764) "1187") + (data (i32.const 4768) "1188") + (data (i32.const 4772) "1189") + (data (i32.const 4776) "1190") + (data (i32.const 4780) "1191") + (data (i32.const 4784) "1192") + (data (i32.const 4788) "1193") + (data (i32.const 4792) "1194") + (data (i32.const 4796) "1195") + (data (i32.const 4800) "1196") + (data (i32.const 4804) "1197") + (data (i32.const 4808) "1198") + (data (i32.const 4812) "1199") + (data (i32.const 4816) "1200") + (data (i32.const 4820) "1201") + (data (i32.const 4824) "1202") + (data (i32.const 4828) "1203") + (data (i32.const 4832) "1204") + (data (i32.const 4836) "1205") + (data (i32.const 4840) "1206") + (data (i32.const 4844) "1207") + (data (i32.const 4848) "1208") + (data (i32.const 4852) "1209") + (data (i32.const 4856) "1210") + (data (i32.const 4860) "1211") + (data (i32.const 4864) "1212") + (data (i32.const 4868) "1213") + (data (i32.const 4872) "1214") + (data (i32.const 4876) "1215") + (data (i32.const 4880) "1216") + (data (i32.const 4884) "1217") + (data (i32.const 4888) "1218") + (data (i32.const 4892) "1219") + (data (i32.const 4896) "1220") + (data (i32.const 4900) "1221") + (data (i32.const 4904) "1222") + (data (i32.const 4908) "1223") + (data (i32.const 4912) "1224") + (data (i32.const 4916) "1225") + (data (i32.const 4920) "1226") + (data (i32.const 4924) "1227") + (data (i32.const 4928) "1228") + (data (i32.const 4932) "1229") + (data (i32.const 4936) "1230") + (data (i32.const 4940) "1231") + (data (i32.const 4944) "1232") + (data (i32.const 4948) "1233") + (data (i32.const 4952) "1234") + (data (i32.const 4956) "1235") + (data (i32.const 4960) "1236") + (data (i32.const 4964) "1237") + (data (i32.const 4968) "1238") + (data (i32.const 4972) "1239") + (data (i32.const 4976) "1240") + (data (i32.const 4980) "1241") + (data (i32.const 4984) "1242") + (data (i32.const 4988) "1243") + (data (i32.const 4992) "1244") + (data (i32.const 4996) "1245") + (data (i32.const 5000) "1246") + (data (i32.const 5004) "1247") + (data (i32.const 5008) "1248") + (data (i32.const 5012) "1249") + (data (i32.const 5016) "1250") + (data (i32.const 5020) "1251") + (data (i32.const 5024) "1252") + (data (i32.const 5028) "1253") + (data (i32.const 5032) "1254") + (data (i32.const 5036) "1255") + (data (i32.const 5040) "1256") + (data (i32.const 5044) "1257") + (data (i32.const 5048) "1258") + (data (i32.const 5052) "1259") + (data (i32.const 5056) "1260") + (data (i32.const 5060) "1261") + (data (i32.const 5064) "1262") + (data (i32.const 5068) "1263") + (data (i32.const 5072) "1264") + (data (i32.const 5076) "1265") + (data (i32.const 5080) "1266") + (data (i32.const 5084) "1267") + (data (i32.const 5088) "1268") + (data (i32.const 5092) "1269") + (data (i32.const 5096) "1270") + (data (i32.const 5100) "1271") + (data (i32.const 5104) "1272") + (data (i32.const 5108) "1273") + (data (i32.const 5112) "1274") + (data (i32.const 5116) "1275") + (data (i32.const 5120) "1276") + (data (i32.const 5124) "1277") + (data (i32.const 5128) "1278") + (data (i32.const 5132) "1279") + (data (i32.const 5136) "1280") + (data (i32.const 5140) "1281") + (data (i32.const 5144) "1282") + (data (i32.const 5148) "1283") + (data (i32.const 5152) "1284") + (data (i32.const 5156) "1285") + (data (i32.const 5160) "1286") + (data (i32.const 5164) "1287") + (data (i32.const 5168) "1288") + (data (i32.const 5172) "1289") + (data (i32.const 5176) "1290") + (data (i32.const 5180) "1291") + (data (i32.const 5184) "1292") + (data (i32.const 5188) "1293") + (data (i32.const 5192) "1294") + (data (i32.const 5196) "1295") + (data (i32.const 5200) "1296") + (data (i32.const 5204) "1297") + (data (i32.const 5208) "1298") + (data (i32.const 5212) "1299") + (data (i32.const 5216) "1300") + (data (i32.const 5220) "1301") + (data (i32.const 5224) "1302") + (data (i32.const 5228) "1303") + (data (i32.const 5232) "1304") + (data (i32.const 5236) "1305") + (data (i32.const 5240) "1306") + (data (i32.const 5244) "1307") + (data (i32.const 5248) "1308") + (data (i32.const 5252) "1309") + (data (i32.const 5256) "1310") + (data (i32.const 5260) "1311") + (data (i32.const 5264) "1312") + (data (i32.const 5268) "1313") + (data (i32.const 5272) "1314") + (data (i32.const 5276) "1315") + (data (i32.const 5280) "1316") + (data (i32.const 5284) "1317") + (data (i32.const 5288) "1318") + (data (i32.const 5292) "1319") + (data (i32.const 5296) "1320") + (data (i32.const 5300) "1321") + (data (i32.const 5304) "1322") + (data (i32.const 5308) "1323") + (data (i32.const 5312) "1324") + (data (i32.const 5316) "1325") + (data (i32.const 5320) "1326") + (data (i32.const 5324) "1327") + (data (i32.const 5328) "1328") + (data (i32.const 5332) "1329") + (data (i32.const 5336) "1330") + (data (i32.const 5340) "1331") + (data (i32.const 5344) "1332") + (data (i32.const 5348) "1333") + (data (i32.const 5352) "1334") + (data (i32.const 5356) "1335") + (data (i32.const 5360) "1336") + (data (i32.const 5364) "1337") + (data (i32.const 5368) "1338") + (data (i32.const 5372) "1339") + (data (i32.const 5376) "1340") + (data (i32.const 5380) "1341") + (data (i32.const 5384) "1342") + (data (i32.const 5388) "1343") + (data (i32.const 5392) "1344") + (data (i32.const 5396) "1345") + (data (i32.const 5400) "1346") + (data (i32.const 5404) "1347") + (data (i32.const 5408) "1348") + (data (i32.const 5412) "1349") + (data (i32.const 5416) "1350") + (data (i32.const 5420) "1351") + (data (i32.const 5424) "1352") + (data (i32.const 5428) "1353") + (data (i32.const 5432) "1354") + (data (i32.const 5436) "1355") + (data (i32.const 5440) "1356") + (data (i32.const 5444) "1357") + (data (i32.const 5448) "1358") + (data (i32.const 5452) "1359") + (data (i32.const 5456) "1360") + (data (i32.const 5460) "1361") + (data (i32.const 5464) "1362") + (data (i32.const 5468) "1363") + (data (i32.const 5472) "1364") + (data (i32.const 5476) "1365") + (data (i32.const 5480) "1366") + (data (i32.const 5484) "1367") + (data (i32.const 5488) "1368") + (data (i32.const 5492) "1369") + (data (i32.const 5496) "1370") + (data (i32.const 5500) "1371") + (data (i32.const 5504) "1372") + (data (i32.const 5508) "1373") + (data (i32.const 5512) "1374") + (data (i32.const 5516) "1375") + (data (i32.const 5520) "1376") + (data (i32.const 5524) "1377") + (data (i32.const 5528) "1378") + (data (i32.const 5532) "1379") + (data (i32.const 5536) "1380") + (data (i32.const 5540) "1381") + (data (i32.const 5544) "1382") + (data (i32.const 5548) "1383") + (data (i32.const 5552) "1384") + (data (i32.const 5556) "1385") + (data (i32.const 5560) "1386") + (data (i32.const 5564) "1387") + (data (i32.const 5568) "1388") + (data (i32.const 5572) "1389") + (data (i32.const 5576) "1390") + (data (i32.const 5580) "1391") + (data (i32.const 5584) "1392") + (data (i32.const 5588) "1393") + (data (i32.const 5592) "1394") + (data (i32.const 5596) "1395") + (data (i32.const 5600) "1396") + (data (i32.const 5604) "1397") + (data (i32.const 5608) "1398") + (data (i32.const 5612) "1399") + (data (i32.const 5616) "1400") + (data (i32.const 5620) "1401") + (data (i32.const 5624) "1402") + (data (i32.const 5628) "1403") + (data (i32.const 5632) "1404") + (data (i32.const 5636) "1405") + (data (i32.const 5640) "1406") + (data (i32.const 5644) "1407") + (data (i32.const 5648) "1408") + (data (i32.const 5652) "1409") + (data (i32.const 5656) "1410") + (data (i32.const 5660) "1411") + (data (i32.const 5664) "1412") + (data (i32.const 5668) "1413") + (data (i32.const 5672) "1414") + (data (i32.const 5676) "1415") + (data (i32.const 5680) "1416") + (data (i32.const 5684) "1417") + (data (i32.const 5688) "1418") + (data (i32.const 5692) "1419") + (data (i32.const 5696) "1420") + (data (i32.const 5700) "1421") + (data (i32.const 5704) "1422") + (data (i32.const 5708) "1423") + (data (i32.const 5712) "1424") + (data (i32.const 5716) "1425") + (data (i32.const 5720) "1426") + (data (i32.const 5724) "1427") + (data (i32.const 5728) "1428") + (data (i32.const 5732) "1429") + (data (i32.const 5736) "1430") + (data (i32.const 5740) "1431") + (data (i32.const 5744) "1432") + (data (i32.const 5748) "1433") + (data (i32.const 5752) "1434") + (data (i32.const 5756) "1435") + (data (i32.const 5760) "1436") + (data (i32.const 5764) "1437") + (data (i32.const 5768) "1438") + (data (i32.const 5772) "1439") + (data (i32.const 5776) "1440") + (data (i32.const 5780) "1441") + (data (i32.const 5784) "1442") + (data (i32.const 5788) "1443") + (data (i32.const 5792) "1444") + (data (i32.const 5796) "1445") + (data (i32.const 5800) "1446") + (data (i32.const 5804) "1447") + (data (i32.const 5808) "1448") + (data (i32.const 5812) "1449") + (data (i32.const 5816) "1450") + (data (i32.const 5820) "1451") + (data (i32.const 5824) "1452") + (data (i32.const 5828) "1453") + (data (i32.const 5832) "1454") + (data (i32.const 5836) "1455") + (data (i32.const 5840) "1456") + (data (i32.const 5844) "1457") + (data (i32.const 5848) "1458") + (data (i32.const 5852) "1459") + (data (i32.const 5856) "1460") + (data (i32.const 5860) "1461") + (data (i32.const 5864) "1462") + (data (i32.const 5868) "1463") + (data (i32.const 5872) "1464") + (data (i32.const 5876) "1465") + (data (i32.const 5880) "1466") + (data (i32.const 5884) "1467") + (data (i32.const 5888) "1468") + (data (i32.const 5892) "1469") + (data (i32.const 5896) "1470") + (data (i32.const 5900) "1471") + (data (i32.const 5904) "1472") + (data (i32.const 5908) "1473") + (data (i32.const 5912) "1474") + (data (i32.const 5916) "1475") + (data (i32.const 5920) "1476") + (data (i32.const 5924) "1477") + (data (i32.const 5928) "1478") + (data (i32.const 5932) "1479") + (data (i32.const 5936) "1480") + (data (i32.const 5940) "1481") + (data (i32.const 5944) "1482") + (data (i32.const 5948) "1483") + (data (i32.const 5952) "1484") + (data (i32.const 5956) "1485") + (data (i32.const 5960) "1486") + (data (i32.const 5964) "1487") + (data (i32.const 5968) "1488") + (data (i32.const 5972) "1489") + (data (i32.const 5976) "1490") + (data (i32.const 5980) "1491") + (data (i32.const 5984) "1492") + (data (i32.const 5988) "1493") + (data (i32.const 5992) "1494") + (data (i32.const 5996) "1495") + (data (i32.const 6000) "1496") + (data (i32.const 6004) "1497") + (data (i32.const 6008) "1498") + (data (i32.const 6012) "1499") + (data (i32.const 6016) "1500") + (data (i32.const 6020) "1501") + (data (i32.const 6024) "1502") + (data (i32.const 6028) "1503") + (data (i32.const 6032) "1504") + (data (i32.const 6036) "1505") + (data (i32.const 6040) "1506") + (data (i32.const 6044) "1507") + (data (i32.const 6048) "1508") + (data (i32.const 6052) "1509") + (data (i32.const 6056) "1510") + (data (i32.const 6060) "1511") + (data (i32.const 6064) "1512") + (data (i32.const 6068) "1513") + (data (i32.const 6072) "1514") + (data (i32.const 6076) "1515") + (data (i32.const 6080) "1516") + (data (i32.const 6084) "1517") + (data (i32.const 6088) "1518") + (data (i32.const 6092) "1519") + (data (i32.const 6096) "1520") + (data (i32.const 6100) "1521") + (data (i32.const 6104) "1522") + (data (i32.const 6108) "1523") + (data (i32.const 6112) "1524") + (data (i32.const 6116) "1525") + (data (i32.const 6120) "1526") + (data (i32.const 6124) "1527") + (data (i32.const 6128) "1528") + (data (i32.const 6132) "1529") + (data (i32.const 6136) "1530") + (data (i32.const 6140) "1531") + (data (i32.const 6144) "1532") + (data (i32.const 6148) "1533") + (data (i32.const 6152) "1534") + (data (i32.const 6156) "1535") + (data (i32.const 6160) "1536") + (data (i32.const 6164) "1537") + (data (i32.const 6168) "1538") + (data (i32.const 6172) "1539") + (data (i32.const 6176) "1540") + (data (i32.const 6180) "1541") + (data (i32.const 6184) "1542") + (data (i32.const 6188) "1543") + (data (i32.const 6192) "1544") + (data (i32.const 6196) "1545") + (data (i32.const 6200) "1546") + (data (i32.const 6204) "1547") + (data (i32.const 6208) "1548") + (data (i32.const 6212) "1549") + (data (i32.const 6216) "1550") + (data (i32.const 6220) "1551") + (data (i32.const 6224) "1552") + (data (i32.const 6228) "1553") + (data (i32.const 6232) "1554") + (data (i32.const 6236) "1555") + (data (i32.const 6240) "1556") + (data (i32.const 6244) "1557") + (data (i32.const 6248) "1558") + (data (i32.const 6252) "1559") + (data (i32.const 6256) "1560") + (data (i32.const 6260) "1561") + (data (i32.const 6264) "1562") + (data (i32.const 6268) "1563") + (data (i32.const 6272) "1564") + (data (i32.const 6276) "1565") + (data (i32.const 6280) "1566") + (data (i32.const 6284) "1567") + (data (i32.const 6288) "1568") + (data (i32.const 6292) "1569") + (data (i32.const 6296) "1570") + (data (i32.const 6300) "1571") + (data (i32.const 6304) "1572") + (data (i32.const 6308) "1573") + (data (i32.const 6312) "1574") + (data (i32.const 6316) "1575") + (data (i32.const 6320) "1576") + (data (i32.const 6324) "1577") + (data (i32.const 6328) "1578") + (data (i32.const 6332) "1579") + (data (i32.const 6336) "1580") + (data (i32.const 6340) "1581") + (data (i32.const 6344) "1582") + (data (i32.const 6348) "1583") + (data (i32.const 6352) "1584") + (data (i32.const 6356) "1585") + (data (i32.const 6360) "1586") + (data (i32.const 6364) "1587") + (data (i32.const 6368) "1588") + (data (i32.const 6372) "1589") + (data (i32.const 6376) "1590") + (data (i32.const 6380) "1591") + (data (i32.const 6384) "1592") + (data (i32.const 6388) "1593") + (data (i32.const 6392) "1594") + (data (i32.const 6396) "1595") + (data (i32.const 6400) "1596") + (data (i32.const 6404) "1597") + (data (i32.const 6408) "1598") + (data (i32.const 6412) "1599") + (data (i32.const 6416) "1600") + (data (i32.const 6420) "1601") + (data (i32.const 6424) "1602") + (data (i32.const 6428) "1603") + (data (i32.const 6432) "1604") + (data (i32.const 6436) "1605") + (data (i32.const 6440) "1606") + (data (i32.const 6444) "1607") + (data (i32.const 6448) "1608") + (data (i32.const 6452) "1609") + (data (i32.const 6456) "1610") + (data (i32.const 6460) "1611") + (data (i32.const 6464) "1612") + (data (i32.const 6468) "1613") + (data (i32.const 6472) "1614") + (data (i32.const 6476) "1615") + (data (i32.const 6480) "1616") + (data (i32.const 6484) "1617") + (data (i32.const 6488) "1618") + (data (i32.const 6492) "1619") + (data (i32.const 6496) "1620") + (data (i32.const 6500) "1621") + (data (i32.const 6504) "1622") + (data (i32.const 6508) "1623") + (data (i32.const 6512) "1624") + (data (i32.const 6516) "1625") + (data (i32.const 6520) "1626") + (data (i32.const 6524) "1627") + (data (i32.const 6528) "1628") + (data (i32.const 6532) "1629") + (data (i32.const 6536) "1630") + (data (i32.const 6540) "1631") + (data (i32.const 6544) "1632") + (data (i32.const 6548) "1633") + (data (i32.const 6552) "1634") + (data (i32.const 6556) "1635") + (data (i32.const 6560) "1636") + (data (i32.const 6564) "1637") + (data (i32.const 6568) "1638") + (data (i32.const 6572) "1639") + (data (i32.const 6576) "1640") + (data (i32.const 6580) "1641") + (data (i32.const 6584) "1642") + (data (i32.const 6588) "1643") + (data (i32.const 6592) "1644") + (data (i32.const 6596) "1645") + (data (i32.const 6600) "1646") + (data (i32.const 6604) "1647") + (data (i32.const 6608) "1648") + (data (i32.const 6612) "1649") + (data (i32.const 6616) "1650") + (data (i32.const 6620) "1651") + (data (i32.const 6624) "1652") + (data (i32.const 6628) "1653") + (data (i32.const 6632) "1654") + (data (i32.const 6636) "1655") + (data (i32.const 6640) "1656") + (data (i32.const 6644) "1657") + (data (i32.const 6648) "1658") + (data (i32.const 6652) "1659") + (data (i32.const 6656) "1660") + (data (i32.const 6660) "1661") + (data (i32.const 6664) "1662") + (data (i32.const 6668) "1663") + (data (i32.const 6672) "1664") + (data (i32.const 6676) "1665") + (data (i32.const 6680) "1666") + (data (i32.const 6684) "1667") + (data (i32.const 6688) "1668") + (data (i32.const 6692) "1669") + (data (i32.const 6696) "1670") + (data (i32.const 6700) "1671") + (data (i32.const 6704) "1672") + (data (i32.const 6708) "1673") + (data (i32.const 6712) "1674") + (data (i32.const 6716) "1675") + (data (i32.const 6720) "1676") + (data (i32.const 6724) "1677") + (data (i32.const 6728) "1678") + (data (i32.const 6732) "1679") + (data (i32.const 6736) "1680") + (data (i32.const 6740) "1681") + (data (i32.const 6744) "1682") + (data (i32.const 6748) "1683") + (data (i32.const 6752) "1684") + (data (i32.const 6756) "1685") + (data (i32.const 6760) "1686") + (data (i32.const 6764) "1687") + (data (i32.const 6768) "1688") + (data (i32.const 6772) "1689") + (data (i32.const 6776) "1690") + (data (i32.const 6780) "1691") + (data (i32.const 6784) "1692") + (data (i32.const 6788) "1693") + (data (i32.const 6792) "1694") + (data (i32.const 6796) "1695") + (data (i32.const 6800) "1696") + (data (i32.const 6804) "1697") + (data (i32.const 6808) "1698") + (data (i32.const 6812) "1699") + (data (i32.const 6816) "1700") + (data (i32.const 6820) "1701") + (data (i32.const 6824) "1702") + (data (i32.const 6828) "1703") + (data (i32.const 6832) "1704") + (data (i32.const 6836) "1705") + (data (i32.const 6840) "1706") + (data (i32.const 6844) "1707") + (data (i32.const 6848) "1708") + (data (i32.const 6852) "1709") + (data (i32.const 6856) "1710") + (data (i32.const 6860) "1711") + (data (i32.const 6864) "1712") + (data (i32.const 6868) "1713") + (data (i32.const 6872) "1714") + (data (i32.const 6876) "1715") + (data (i32.const 6880) "1716") + (data (i32.const 6884) "1717") + (data (i32.const 6888) "1718") + (data (i32.const 6892) "1719") + (data (i32.const 6896) "1720") + (data (i32.const 6900) "1721") + (data (i32.const 6904) "1722") + (data (i32.const 6908) "1723") + (data (i32.const 6912) "1724") + (data (i32.const 6916) "1725") + (data (i32.const 6920) "1726") + (data (i32.const 6924) "1727") + (data (i32.const 6928) "1728") + (data (i32.const 6932) "1729") + (data (i32.const 6936) "1730") + (data (i32.const 6940) "1731") + (data (i32.const 6944) "1732") + (data (i32.const 6948) "1733") + (data (i32.const 6952) "1734") + (data (i32.const 6956) "1735") + (data (i32.const 6960) "1736") + (data (i32.const 6964) "1737") + (data (i32.const 6968) "1738") + (data (i32.const 6972) "1739") + (data (i32.const 6976) "1740") + (data (i32.const 6980) "1741") + (data (i32.const 6984) "1742") + (data (i32.const 6988) "1743") + (data (i32.const 6992) "1744") + (data (i32.const 6996) "1745") + (data (i32.const 7000) "1746") + (data (i32.const 7004) "1747") + (data (i32.const 7008) "1748") + (data (i32.const 7012) "1749") + (data (i32.const 7016) "1750") + (data (i32.const 7020) "1751") + (data (i32.const 7024) "1752") + (data (i32.const 7028) "1753") + (data (i32.const 7032) "1754") + (data (i32.const 7036) "1755") + (data (i32.const 7040) "1756") + (data (i32.const 7044) "1757") + (data (i32.const 7048) "1758") + (data (i32.const 7052) "1759") + (data (i32.const 7056) "1760") + (data (i32.const 7060) "1761") + (data (i32.const 7064) "1762") + (data (i32.const 7068) "1763") + (data (i32.const 7072) "1764") + (data (i32.const 7076) "1765") + (data (i32.const 7080) "1766") + (data (i32.const 7084) "1767") + (data (i32.const 7088) "1768") + (data (i32.const 7092) "1769") + (data (i32.const 7096) "1770") + (data (i32.const 7100) "1771") + (data (i32.const 7104) "1772") + (data (i32.const 7108) "1773") + (data (i32.const 7112) "1774") + (data (i32.const 7116) "1775") + (data (i32.const 7120) "1776") + (data (i32.const 7124) "1777") + (data (i32.const 7128) "1778") + (data (i32.const 7132) "1779") + (data (i32.const 7136) "1780") + (data (i32.const 7140) "1781") + (data (i32.const 7144) "1782") + (data (i32.const 7148) "1783") + (data (i32.const 7152) "1784") + (data (i32.const 7156) "1785") + (data (i32.const 7160) "1786") + (data (i32.const 7164) "1787") + (data (i32.const 7168) "1788") + (data (i32.const 7172) "1789") + (data (i32.const 7176) "1790") + (data (i32.const 7180) "1791") + (data (i32.const 7184) "1792") + (data (i32.const 7188) "1793") + (data (i32.const 7192) "1794") + (data (i32.const 7196) "1795") + (data (i32.const 7200) "1796") + (data (i32.const 7204) "1797") + (data (i32.const 7208) "1798") + (data (i32.const 7212) "1799") + (data (i32.const 7216) "1800") + (data (i32.const 7220) "1801") + (data (i32.const 7224) "1802") + (data (i32.const 7228) "1803") + (data (i32.const 7232) "1804") + (data (i32.const 7236) "1805") + (data (i32.const 7240) "1806") + (data (i32.const 7244) "1807") + (data (i32.const 7248) "1808") + (data (i32.const 7252) "1809") + (data (i32.const 7256) "1810") + (data (i32.const 7260) "1811") + (data (i32.const 7264) "1812") + (data (i32.const 7268) "1813") + (data (i32.const 7272) "1814") + (data (i32.const 7276) "1815") + (data (i32.const 7280) "1816") + (data (i32.const 7284) "1817") + (data (i32.const 7288) "1818") + (data (i32.const 7292) "1819") + (data (i32.const 7296) "1820") + (data (i32.const 7300) "1821") + (data (i32.const 7304) "1822") + (data (i32.const 7308) "1823") + (data (i32.const 7312) "1824") + (data (i32.const 7316) "1825") + (data (i32.const 7320) "1826") + (data (i32.const 7324) "1827") + (data (i32.const 7328) "1828") + (data (i32.const 7332) "1829") + (data (i32.const 7336) "1830") + (data (i32.const 7340) "1831") + (data (i32.const 7344) "1832") + (data (i32.const 7348) "1833") + (data (i32.const 7352) "1834") + (data (i32.const 7356) "1835") + (data (i32.const 7360) "1836") + (data (i32.const 7364) "1837") + (data (i32.const 7368) "1838") + (data (i32.const 7372) "1839") + (data (i32.const 7376) "1840") + (data (i32.const 7380) "1841") + (data (i32.const 7384) "1842") + (data (i32.const 7388) "1843") + (data (i32.const 7392) "1844") + (data (i32.const 7396) "1845") + (data (i32.const 7400) "1846") + (data (i32.const 7404) "1847") + (data (i32.const 7408) "1848") + (data (i32.const 7412) "1849") + (data (i32.const 7416) "1850") + (data (i32.const 7420) "1851") + (data (i32.const 7424) "1852") + (data (i32.const 7428) "1853") + (data (i32.const 7432) "1854") + (data (i32.const 7436) "1855") + (data (i32.const 7440) "1856") + (data (i32.const 7444) "1857") + (data (i32.const 7448) "1858") + (data (i32.const 7452) "1859") + (data (i32.const 7456) "1860") + (data (i32.const 7460) "1861") + (data (i32.const 7464) "1862") + (data (i32.const 7468) "1863") + (data (i32.const 7472) "1864") + (data (i32.const 7476) "1865") + (data (i32.const 7480) "1866") + (data (i32.const 7484) "1867") + (data (i32.const 7488) "1868") + (data (i32.const 7492) "1869") + (data (i32.const 7496) "1870") + (data (i32.const 7500) "1871") + (data (i32.const 7504) "1872") + (data (i32.const 7508) "1873") + (data (i32.const 7512) "1874") + (data (i32.const 7516) "1875") + (data (i32.const 7520) "1876") + (data (i32.const 7524) "1877") + (data (i32.const 7528) "1878") + (data (i32.const 7532) "1879") + (data (i32.const 7536) "1880") + (data (i32.const 7540) "1881") + (data (i32.const 7544) "1882") + (data (i32.const 7548) "1883") + (data (i32.const 7552) "1884") + (data (i32.const 7556) "1885") + (data (i32.const 7560) "1886") + (data (i32.const 7564) "1887") + (data (i32.const 7568) "1888") + (data (i32.const 7572) "1889") + (data (i32.const 7576) "1890") + (data (i32.const 7580) "1891") + (data (i32.const 7584) "1892") + (data (i32.const 7588) "1893") + (data (i32.const 7592) "1894") + (data (i32.const 7596) "1895") + (data (i32.const 7600) "1896") + (data (i32.const 7604) "1897") + (data (i32.const 7608) "1898") + (data (i32.const 7612) "1899") + (data (i32.const 7616) "1900") + (data (i32.const 7620) "1901") + (data (i32.const 7624) "1902") + (data (i32.const 7628) "1903") + (data (i32.const 7632) "1904") + (data (i32.const 7636) "1905") + (data (i32.const 7640) "1906") + (data (i32.const 7644) "1907") + (data (i32.const 7648) "1908") + (data (i32.const 7652) "1909") + (data (i32.const 7656) "1910") + (data (i32.const 7660) "1911") + (data (i32.const 7664) "1912") + (data (i32.const 7668) "1913") + (data (i32.const 7672) "1914") + (data (i32.const 7676) "1915") + (data (i32.const 7680) "1916") + (data (i32.const 7684) "1917") + (data (i32.const 7688) "1918") + (data (i32.const 7692) "1919") + (data (i32.const 7696) "1920") + (data (i32.const 7700) "1921") + (data (i32.const 7704) "1922") + (data (i32.const 7708) "1923") + (data (i32.const 7712) "1924") + (data (i32.const 7716) "1925") + (data (i32.const 7720) "1926") + (data (i32.const 7724) "1927") + (data (i32.const 7728) "1928") + (data (i32.const 7732) "1929") + (data (i32.const 7736) "1930") + (data (i32.const 7740) "1931") + (data (i32.const 7744) "1932") + (data (i32.const 7748) "1933") + (data (i32.const 7752) "1934") + (data (i32.const 7756) "1935") + (data (i32.const 7760) "1936") + (data (i32.const 7764) "1937") + (data (i32.const 7768) "1938") + (data (i32.const 7772) "1939") + (data (i32.const 7776) "1940") + (data (i32.const 7780) "1941") + (data (i32.const 7784) "1942") + (data (i32.const 7788) "1943") + (data (i32.const 7792) "1944") + (data (i32.const 7796) "1945") + (data (i32.const 7800) "1946") + (data (i32.const 7804) "1947") + (data (i32.const 7808) "1948") + (data (i32.const 7812) "1949") + (data (i32.const 7816) "1950") + (data (i32.const 7820) "1951") + (data (i32.const 7824) "1952") + (data (i32.const 7828) "1953") + (data (i32.const 7832) "1954") + (data (i32.const 7836) "1955") + (data (i32.const 7840) "1956") + (data (i32.const 7844) "1957") + (data (i32.const 7848) "1958") + (data (i32.const 7852) "1959") + (data (i32.const 7856) "1960") + (data (i32.const 7860) "1961") + (data (i32.const 7864) "1962") + (data (i32.const 7868) "1963") + (data (i32.const 7872) "1964") + (data (i32.const 7876) "1965") + (data (i32.const 7880) "1966") + (data (i32.const 7884) "1967") + (data (i32.const 7888) "1968") + (data (i32.const 7892) "1969") + (data (i32.const 7896) "1970") + (data (i32.const 7900) "1971") + (data (i32.const 7904) "1972") + (data (i32.const 7908) "1973") + (data (i32.const 7912) "1974") + (data (i32.const 7916) "1975") + (data (i32.const 7920) "1976") + (data (i32.const 7924) "1977") + (data (i32.const 7928) "1978") + (data (i32.const 7932) "1979") + (data (i32.const 7936) "1980") + (data (i32.const 7940) "1981") + (data (i32.const 7944) "1982") + (data (i32.const 7948) "1983") + (data (i32.const 7952) "1984") + (data (i32.const 7956) "1985") + (data (i32.const 7960) "1986") + (data (i32.const 7964) "1987") + (data (i32.const 7968) "1988") + (data (i32.const 7972) "1989") + (data (i32.const 7976) "1990") + (data (i32.const 7980) "1991") + (data (i32.const 7984) "1992") + (data (i32.const 7988) "1993") + (data (i32.const 7992) "1994") + (data (i32.const 7996) "1995") + (data (i32.const 8000) "1996") + (data (i32.const 8004) "1997") + (data (i32.const 8008) "1998") + (data (i32.const 8012) "1999") + (data (i32.const 8016) "2000") + (data (i32.const 8020) "2001") + (data (i32.const 8024) "2002") + (data (i32.const 8028) "2003") + (data (i32.const 8032) "2004") + (data (i32.const 8036) "2005") + (data (i32.const 8040) "2006") + (data (i32.const 8044) "2007") + (data (i32.const 8048) "2008") + (data (i32.const 8052) "2009") + (data (i32.const 8056) "2010") + (data (i32.const 8060) "2011") + (data (i32.const 8064) "2012") + (data (i32.const 8068) "2013") + (data (i32.const 8072) "2014") + (data (i32.const 8076) "2015") + (data (i32.const 8080) "2016") + (data (i32.const 8084) "2017") + (data (i32.const 8088) "2018") + (data (i32.const 8092) "2019") + (data (i32.const 8096) "2020") + (data (i32.const 8100) "2021") + (data (i32.const 8104) "2022") + (data (i32.const 8108) "2023") + (data (i32.const 8112) "2024") + (data (i32.const 8116) "2025") + (data (i32.const 8120) "2026") + (data (i32.const 8124) "2027") + (data (i32.const 8128) "2028") + (data (i32.const 8132) "2029") + (data (i32.const 8136) "2030") + (data (i32.const 8140) "2031") + (data (i32.const 8144) "2032") + (data (i32.const 8148) "2033") + (data (i32.const 8152) "2034") + (data (i32.const 8156) "2035") + (data (i32.const 8160) "2036") + (data (i32.const 8164) "2037") + (data (i32.const 8168) "2038") + (data (i32.const 8172) "2039") + (data (i32.const 8176) "2040") + (data (i32.const 8180) "2041") + (data (i32.const 8184) "2042") + (data (i32.const 8188) "2043") + (data (i32.const 8192) "2044") + (data (i32.const 8196) "2045") + (data (i32.const 8200) "2046") + (data (i32.const 8204) "2047") + (data (i32.const 8208) "2048") + (data (i32.const 8212) "2049") + (data (i32.const 8216) "2050") + (data (i32.const 8220) "2051") + (data (i32.const 8224) "2052") + (data (i32.const 8228) "2053") + (data (i32.const 8232) "2054") + (data (i32.const 8236) "2055") + (data (i32.const 8240) "2056") + (data (i32.const 8244) "2057") + (data (i32.const 8248) "2058") + (data (i32.const 8252) "2059") + (data (i32.const 8256) "2060") + (data (i32.const 8260) "2061") + (data (i32.const 8264) "2062") + (data (i32.const 8268) "2063") + (data (i32.const 8272) "2064") + (data (i32.const 8276) "2065") + (data (i32.const 8280) "2066") + (data (i32.const 8284) "2067") + (data (i32.const 8288) "2068") + (data (i32.const 8292) "2069") + (data (i32.const 8296) "2070") + (data (i32.const 8300) "2071") + (data (i32.const 8304) "2072") + (data (i32.const 8308) "2073") + (data (i32.const 8312) "2074") + (data (i32.const 8316) "2075") + (data (i32.const 8320) "2076") + (data (i32.const 8324) "2077") + (data (i32.const 8328) "2078") + (data (i32.const 8332) "2079") + (data (i32.const 8336) "2080") + (data (i32.const 8340) "2081") + (data (i32.const 8344) "2082") + (data (i32.const 8348) "2083") + (data (i32.const 8352) "2084") + (data (i32.const 8356) "2085") + (data (i32.const 8360) "2086") + (data (i32.const 8364) "2087") + (data (i32.const 8368) "2088") + (data (i32.const 8372) "2089") + (data (i32.const 8376) "2090") + (data (i32.const 8380) "2091") + (data (i32.const 8384) "2092") + (data (i32.const 8388) "2093") + (data (i32.const 8392) "2094") + (data (i32.const 8396) "2095") + (data (i32.const 8400) "2096") + (data (i32.const 8404) "2097") + (data (i32.const 8408) "2098") + (data (i32.const 8412) "2099") + (data (i32.const 8416) "2100") + (data (i32.const 8420) "2101") + (data (i32.const 8424) "2102") + (data (i32.const 8428) "2103") + (data (i32.const 8432) "2104") + (data (i32.const 8436) "2105") + (data (i32.const 8440) "2106") + (data (i32.const 8444) "2107") + (data (i32.const 8448) "2108") + (data (i32.const 8452) "2109") + (data (i32.const 8456) "2110") + (data (i32.const 8460) "2111") + (data (i32.const 8464) "2112") + (data (i32.const 8468) "2113") + (data (i32.const 8472) "2114") + (data (i32.const 8476) "2115") + (data (i32.const 8480) "2116") + (data (i32.const 8484) "2117") + (data (i32.const 8488) "2118") + (data (i32.const 8492) "2119") + (data (i32.const 8496) "2120") + (data (i32.const 8500) "2121") + (data (i32.const 8504) "2122") + (data (i32.const 8508) "2123") + (data (i32.const 8512) "2124") + (data (i32.const 8516) "2125") + (data (i32.const 8520) "2126") + (data (i32.const 8524) "2127") + (data (i32.const 8528) "2128") + (data (i32.const 8532) "2129") + (data (i32.const 8536) "2130") + (data (i32.const 8540) "2131") + (data (i32.const 8544) "2132") + (data (i32.const 8548) "2133") + (data (i32.const 8552) "2134") + (data (i32.const 8556) "2135") + (data (i32.const 8560) "2136") + (data (i32.const 8564) "2137") + (data (i32.const 8568) "2138") + (data (i32.const 8572) "2139") + (data (i32.const 8576) "2140") + (data (i32.const 8580) "2141") + (data (i32.const 8584) "2142") + (data (i32.const 8588) "2143") + (data (i32.const 8592) "2144") + (data (i32.const 8596) "2145") + (data (i32.const 8600) "2146") + (data (i32.const 8604) "2147") + (data (i32.const 8608) "2148") + (data (i32.const 8612) "2149") + (data (i32.const 8616) "2150") + (data (i32.const 8620) "2151") + (data (i32.const 8624) "2152") + (data (i32.const 8628) "2153") + (data (i32.const 8632) "2154") + (data (i32.const 8636) "2155") + (data (i32.const 8640) "2156") + (data (i32.const 8644) "2157") + (data (i32.const 8648) "2158") + (data (i32.const 8652) "2159") + (data (i32.const 8656) "2160") + (data (i32.const 8660) "2161") + (data (i32.const 8664) "2162") + (data (i32.const 8668) "2163") + (data (i32.const 8672) "2164") + (data (i32.const 8676) "2165") + (data (i32.const 8680) "2166") + (data (i32.const 8684) "2167") + (data (i32.const 8688) "2168") + (data (i32.const 8692) "2169") + (data (i32.const 8696) "2170") + (data (i32.const 8700) "2171") + (data (i32.const 8704) "2172") + (data (i32.const 8708) "2173") + (data (i32.const 8712) "2174") + (data (i32.const 8716) "2175") + (data (i32.const 8720) "2176") + (data (i32.const 8724) "2177") + (data (i32.const 8728) "2178") + (data (i32.const 8732) "2179") + (data (i32.const 8736) "2180") + (data (i32.const 8740) "2181") + (data (i32.const 8744) "2182") + (data (i32.const 8748) "2183") + (data (i32.const 8752) "2184") + (data (i32.const 8756) "2185") + (data (i32.const 8760) "2186") + (data (i32.const 8764) "2187") + (data (i32.const 8768) "2188") + (data (i32.const 8772) "2189") + (data (i32.const 8776) "2190") + (data (i32.const 8780) "2191") + (data (i32.const 8784) "2192") + (data (i32.const 8788) "2193") + (data (i32.const 8792) "2194") + (data (i32.const 8796) "2195") + (data (i32.const 8800) "2196") + (data (i32.const 8804) "2197") + (data (i32.const 8808) "2198") + (data (i32.const 8812) "2199") + (data (i32.const 8816) "2200") + (data (i32.const 8820) "2201") + (data (i32.const 8824) "2202") + (data (i32.const 8828) "2203") + (data (i32.const 8832) "2204") + (data (i32.const 8836) "2205") + (data (i32.const 8840) "2206") + (data (i32.const 8844) "2207") + (data (i32.const 8848) "2208") + (data (i32.const 8852) "2209") + (data (i32.const 8856) "2210") + (data (i32.const 8860) "2211") + (data (i32.const 8864) "2212") + (data (i32.const 8868) "2213") + (data (i32.const 8872) "2214") + (data (i32.const 8876) "2215") + (data (i32.const 8880) "2216") + (data (i32.const 8884) "2217") + (data (i32.const 8888) "2218") + (data (i32.const 8892) "2219") + (data (i32.const 8896) "2220") + (data (i32.const 8900) "2221") + (data (i32.const 8904) "2222") + (data (i32.const 8908) "2223") + (data (i32.const 8912) "2224") + (data (i32.const 8916) "2225") + (data (i32.const 8920) "2226") + (data (i32.const 8924) "2227") + (data (i32.const 8928) "2228") + (data (i32.const 8932) "2229") + (data (i32.const 8936) "2230") + (data (i32.const 8940) "2231") + (data (i32.const 8944) "2232") + (data (i32.const 8948) "2233") + (data (i32.const 8952) "2234") + (data (i32.const 8956) "2235") + (data (i32.const 8960) "2236") + (data (i32.const 8964) "2237") + (data (i32.const 8968) "2238") + (data (i32.const 8972) "2239") + (data (i32.const 8976) "2240") + (data (i32.const 8980) "2241") + (data (i32.const 8984) "2242") + (data (i32.const 8988) "2243") + (data (i32.const 8992) "2244") + (data (i32.const 8996) "2245") + (data (i32.const 9000) "2246") + (data (i32.const 9004) "2247") + (data (i32.const 9008) "2248") + (data (i32.const 9012) "2249") + (data (i32.const 9016) "2250") + (data (i32.const 9020) "2251") + (data (i32.const 9024) "2252") + (data (i32.const 9028) "2253") + (data (i32.const 9032) "2254") + (data (i32.const 9036) "2255") + (data (i32.const 9040) "2256") + (data (i32.const 9044) "2257") + (data (i32.const 9048) "2258") + (data (i32.const 9052) "2259") + (data (i32.const 9056) "2260") + (data (i32.const 9060) "2261") + (data (i32.const 9064) "2262") + (data (i32.const 9068) "2263") + (data (i32.const 9072) "2264") + (data (i32.const 9076) "2265") + (data (i32.const 9080) "2266") + (data (i32.const 9084) "2267") + (data (i32.const 9088) "2268") + (data (i32.const 9092) "2269") + (data (i32.const 9096) "2270") + (data (i32.const 9100) "2271") + (data (i32.const 9104) "2272") + (data (i32.const 9108) "2273") + (data (i32.const 9112) "2274") + (data (i32.const 9116) "2275") + (data (i32.const 9120) "2276") + (data (i32.const 9124) "2277") + (data (i32.const 9128) "2278") + (data (i32.const 9132) "2279") + (data (i32.const 9136) "2280") + (data (i32.const 9140) "2281") + (data (i32.const 9144) "2282") + (data (i32.const 9148) "2283") + (data (i32.const 9152) "2284") + (data (i32.const 9156) "2285") + (data (i32.const 9160) "2286") + (data (i32.const 9164) "2287") + (data (i32.const 9168) "2288") + (data (i32.const 9172) "2289") + (data (i32.const 9176) "2290") + (data (i32.const 9180) "2291") + (data (i32.const 9184) "2292") + (data (i32.const 9188) "2293") + (data (i32.const 9192) "2294") + (data (i32.const 9196) "2295") + (data (i32.const 9200) "2296") + (data (i32.const 9204) "2297") + (data (i32.const 9208) "2298") + (data (i32.const 9212) "2299") + (data (i32.const 9216) "2300") + (data (i32.const 9220) "2301") + (data (i32.const 9224) "2302") + (data (i32.const 9228) "2303") + (data (i32.const 9232) "2304") + (data (i32.const 9236) "2305") + (data (i32.const 9240) "2306") + (data (i32.const 9244) "2307") + (data (i32.const 9248) "2308") + (data (i32.const 9252) "2309") + (data (i32.const 9256) "2310") + (data (i32.const 9260) "2311") + (data (i32.const 9264) "2312") + (data (i32.const 9268) "2313") + (data (i32.const 9272) "2314") + (data (i32.const 9276) "2315") + (data (i32.const 9280) "2316") + (data (i32.const 9284) "2317") + (data (i32.const 9288) "2318") + (data (i32.const 9292) "2319") + (data (i32.const 9296) "2320") + (data (i32.const 9300) "2321") + (data (i32.const 9304) "2322") + (data (i32.const 9308) "2323") + (data (i32.const 9312) "2324") + (data (i32.const 9316) "2325") + (data (i32.const 9320) "2326") + (data (i32.const 9324) "2327") + (data (i32.const 9328) "2328") + (data (i32.const 9332) "2329") + (data (i32.const 9336) "2330") + (data (i32.const 9340) "2331") + (data (i32.const 9344) "2332") + (data (i32.const 9348) "2333") + (data (i32.const 9352) "2334") + (data (i32.const 9356) "2335") + (data (i32.const 9360) "2336") + (data (i32.const 9364) "2337") + (data (i32.const 9368) "2338") + (data (i32.const 9372) "2339") + (data (i32.const 9376) "2340") + (data (i32.const 9380) "2341") + (data (i32.const 9384) "2342") + (data (i32.const 9388) "2343") + (data (i32.const 9392) "2344") + (data (i32.const 9396) "2345") + (data (i32.const 9400) "2346") + (data (i32.const 9404) "2347") + (data (i32.const 9408) "2348") + (data (i32.const 9412) "2349") + (data (i32.const 9416) "2350") + (data (i32.const 9420) "2351") + (data (i32.const 9424) "2352") + (data (i32.const 9428) "2353") + (data (i32.const 9432) "2354") + (data (i32.const 9436) "2355") + (data (i32.const 9440) "2356") + (data (i32.const 9444) "2357") + (data (i32.const 9448) "2358") + (data (i32.const 9452) "2359") + (data (i32.const 9456) "2360") + (data (i32.const 9460) "2361") + (data (i32.const 9464) "2362") + (data (i32.const 9468) "2363") + (data (i32.const 9472) "2364") + (data (i32.const 9476) "2365") + (data (i32.const 9480) "2366") + (data (i32.const 9484) "2367") + (data (i32.const 9488) "2368") + (data (i32.const 9492) "2369") + (data (i32.const 9496) "2370") + (data (i32.const 9500) "2371") + (data (i32.const 9504) "2372") + (data (i32.const 9508) "2373") + (data (i32.const 9512) "2374") + (data (i32.const 9516) "2375") + (data (i32.const 9520) "2376") + (data (i32.const 9524) "2377") + (data (i32.const 9528) "2378") + (data (i32.const 9532) "2379") + (data (i32.const 9536) "2380") + (data (i32.const 9540) "2381") + (data (i32.const 9544) "2382") + (data (i32.const 9548) "2383") + (data (i32.const 9552) "2384") + (data (i32.const 9556) "2385") + (data (i32.const 9560) "2386") + (data (i32.const 9564) "2387") + (data (i32.const 9568) "2388") + (data (i32.const 9572) "2389") + (data (i32.const 9576) "2390") + (data (i32.const 9580) "2391") + (data (i32.const 9584) "2392") + (data (i32.const 9588) "2393") + (data (i32.const 9592) "2394") + (data (i32.const 9596) "2395") + (data (i32.const 9600) "2396") + (data (i32.const 9604) "2397") + (data (i32.const 9608) "2398") + (data (i32.const 9612) "2399") + (data (i32.const 9616) "2400") + (data (i32.const 9620) "2401") + (data (i32.const 9624) "2402") + (data (i32.const 9628) "2403") + (data (i32.const 9632) "2404") + (data (i32.const 9636) "2405") + (data (i32.const 9640) "2406") + (data (i32.const 9644) "2407") + (data (i32.const 9648) "2408") + (data (i32.const 9652) "2409") + (data (i32.const 9656) "2410") + (data (i32.const 9660) "2411") + (data (i32.const 9664) "2412") + (data (i32.const 9668) "2413") + (data (i32.const 9672) "2414") + (data (i32.const 9676) "2415") + (data (i32.const 9680) "2416") + (data (i32.const 9684) "2417") + (data (i32.const 9688) "2418") + (data (i32.const 9692) "2419") + (data (i32.const 9696) "2420") + (data (i32.const 9700) "2421") + (data (i32.const 9704) "2422") + (data (i32.const 9708) "2423") + (data (i32.const 9712) "2424") + (data (i32.const 9716) "2425") + (data (i32.const 9720) "2426") + (data (i32.const 9724) "2427") + (data (i32.const 9728) "2428") + (data (i32.const 9732) "2429") + (data (i32.const 9736) "2430") + (data (i32.const 9740) "2431") + (data (i32.const 9744) "2432") + (data (i32.const 9748) "2433") + (data (i32.const 9752) "2434") + (data (i32.const 9756) "2435") + (data (i32.const 9760) "2436") + (data (i32.const 9764) "2437") + (data (i32.const 9768) "2438") + (data (i32.const 9772) "2439") + (data (i32.const 9776) "2440") + (data (i32.const 9780) "2441") + (data (i32.const 9784) "2442") + (data (i32.const 9788) "2443") + (data (i32.const 9792) "2444") + (data (i32.const 9796) "2445") + (data (i32.const 9800) "2446") + (data (i32.const 9804) "2447") + (data (i32.const 9808) "2448") + (data (i32.const 9812) "2449") + (data (i32.const 9816) "2450") + (data (i32.const 9820) "2451") + (data (i32.const 9824) "2452") + (data (i32.const 9828) "2453") + (data (i32.const 9832) "2454") + (data (i32.const 9836) "2455") + (data (i32.const 9840) "2456") + (data (i32.const 9844) "2457") + (data (i32.const 9848) "2458") + (data (i32.const 9852) "2459") + (data (i32.const 9856) "2460") + (data (i32.const 9860) "2461") + (data (i32.const 9864) "2462") + (data (i32.const 9868) "2463") + (data (i32.const 9872) "2464") + (data (i32.const 9876) "2465") + (data (i32.const 9880) "2466") + (data (i32.const 9884) "2467") + (data (i32.const 9888) "2468") + (data (i32.const 9892) "2469") + (data (i32.const 9896) "2470") + (data (i32.const 9900) "2471") + (data (i32.const 9904) "2472") + (data (i32.const 9908) "2473") + (data (i32.const 9912) "2474") + (data (i32.const 9916) "2475") + (data (i32.const 9920) "2476") + (data (i32.const 9924) "2477") + (data (i32.const 9928) "2478") + (data (i32.const 9932) "2479") + (data (i32.const 9936) "2480") + (data (i32.const 9940) "2481") + (data (i32.const 9944) "2482") + (data (i32.const 9948) "2483") + (data (i32.const 9952) "2484") + (data (i32.const 9956) "2485") + (data (i32.const 9960) "2486") + (data (i32.const 9964) "2487") + (data (i32.const 9968) "2488") + (data (i32.const 9972) "2489") + (data (i32.const 9976) "2490") + (data (i32.const 9980) "2491") + (data (i32.const 9984) "2492") + (data (i32.const 9988) "2493") + (data (i32.const 9992) "2494") + (data (i32.const 9996) "2495") + (data (i32.const 10000) "2496") + (data (i32.const 10004) "2497") + (data (i32.const 10008) "2498") + (data (i32.const 10012) "2499") + (data (i32.const 10016) "2500") + (export "add" (func $add)) + (export "sub" (func $sub)) + (export "mul" (func $mul)) + (export "div" (func $div)) + (export "sqrt" (func $sqrt)) + (export "min" (func $min)) + (export "max" (func $max)) + (export "ceil" (func $ceil)) + (export "floor" (func $floor)) + (export "trunc" (func $trunc)) + (export "nearest" (func $nearest)) + (export "is_nanf" (func $is_nanf)) + (export "apply" (func $apply)) + (export "assert_return" (func $assert_return)) + (export "assert_return_nan" (func $assert_return_nan)) + (func $assert_return (param $0 f32) (param $1 f32 ) (param $2 i32) (call $eosio_assert(i32.eq (i32.reinterpret/f32 (get_local $0)) (i32.reinterpret/f32 (get_local $1))) (get_local $2))) + (func $is_nanf (param $0 f32) (result i32) + (i32.gt_u + (i32.and + (i32.reinterpret/f32 + (get_local $0) + ) + (i32.const 2147483647) + ) + (i32.const 2139095040) + ) + ) + (func $assert_return_nan (param $0 f32) (param $1 i32)( call $eosio_assert (call $is_nanf (get_local $0)) (get_local $1))) + (func $add (param $0 f32) (param $1 f32) (result f32) (f32.add (get_local $0) (get_local $1))) + (func $sub (param $0 f32) (param $1 f32) (result f32) (f32.sub (get_local $0) (get_local $1))) + (func $mul (param $0 f32) (param $1 f32) (result f32) (f32.mul (get_local $0) (get_local $1))) + (func $div (param $0 f32) (param $1 f32) (result f32) (f32.div (get_local $0) (get_local $1))) + (func $sqrt (param $0 f32) (result f32) (f32.sqrt (get_local $0))) + (func $min (param $0 f32) (param $1 f32) (result f32) (f32.min (get_local $0) (get_local $1))) + (func $max (param $0 f32) (param $1 f32) (result f32) (f32.max (get_local $0) (get_local $1))) + (func $ceil (param $0 f32) (result f32) (f32.ceil (get_local $0))) + (func $floor (param $0 f32) (result f32) (f32.floor (get_local $0))) + (func $trunc (param $0 f32) (result f32) (f32.trunc (get_local $0))) + (func $nearest (param $0 f32) (result f32) (f32.nearest (get_local $0))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 20)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 24)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 28)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 32)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 36)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 40)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 44)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 48)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 52)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 56)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 60)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 64)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 68)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 72)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 76)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 80)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 84)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 88)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 92)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 96)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 100)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 104)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 108)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 112)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 116)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 120)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 124)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 128)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const -inf)) (f32.const -inf) (i32.const 132)) + (call $assert_return (call $add (f32.const -0x0p+0) (f32.const inf)) (f32.const inf) (i32.const 136)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const -inf)) (f32.const -inf) (i32.const 140)) + (call $assert_return (call $add (f32.const 0x0p+0) (f32.const inf)) (f32.const inf) (i32.const 144)) + (call $assert_return_nan (call $add (f32.const -0x0p+0) (f32.const -nan)) (i32.const 148)) + (call $assert_return_nan (call $add (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 152)) + (call $assert_return_nan (call $add (f32.const -0x0p+0) (f32.const nan)) (i32.const 156)) + (call $assert_return_nan (call $add (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 160)) + (call $assert_return_nan (call $add (f32.const 0x0p+0) (f32.const -nan)) (i32.const 164)) + (call $assert_return_nan (call $add (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 168)) + (call $assert_return_nan (call $add (f32.const 0x0p+0) (f32.const nan)) (i32.const 172)) + (call $assert_return_nan (call $add (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 176)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149) (i32.const 180)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149) (i32.const 184)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149) (i32.const 188)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149) (i32.const 192)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-148) (i32.const 196)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 200)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 204)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-148) (i32.const 208)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1.000002p-126) (i32.const 212)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1.fffffcp-127) (i32.const 216)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1.fffffcp-127) (i32.const 220)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1.000002p-126) (i32.const 224)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 228)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 232)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 236)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 240)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 244)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 248)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 252)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 256)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 260)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 264)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 268)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 272)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 276)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 280)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 284)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 288)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const -inf)) (f32.const -inf) (i32.const 292)) + (call $assert_return (call $add (f32.const -0x1p-149) (f32.const inf)) (f32.const inf) (i32.const 296)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const -inf)) (f32.const -inf) (i32.const 300)) + (call $assert_return (call $add (f32.const 0x1p-149) (f32.const inf)) (f32.const inf) (i32.const 304)) + (call $assert_return_nan (call $add (f32.const -0x1p-149) (f32.const -nan)) (i32.const 308)) + (call $assert_return_nan (call $add (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 312)) + (call $assert_return_nan (call $add (f32.const -0x1p-149) (f32.const nan)) (i32.const 316)) + (call $assert_return_nan (call $add (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 320)) + (call $assert_return_nan (call $add (f32.const 0x1p-149) (f32.const -nan)) (i32.const 324)) + (call $assert_return_nan (call $add (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 328)) + (call $assert_return_nan (call $add (f32.const 0x1p-149) (f32.const nan)) (i32.const 332)) + (call $assert_return_nan (call $add (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 336)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126) (i32.const 340)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126) (i32.const 344)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126) (i32.const 348)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126) (i32.const 352)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1.000002p-126) (i32.const 356)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1.fffffcp-127) (i32.const 360)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1.fffffcp-127) (i32.const 364)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.000002p-126) (i32.const 368)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-125) (i32.const 372)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 376)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 380)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-125) (i32.const 384)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 388)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 392)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 396)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 400)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 404)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 408)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 412)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 416)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 420)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 424)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 428)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 432)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 436)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 440)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 444)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 448)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const -inf)) (f32.const -inf) (i32.const 452)) + (call $assert_return (call $add (f32.const -0x1p-126) (f32.const inf)) (f32.const inf) (i32.const 456)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const -inf)) (f32.const -inf) (i32.const 460)) + (call $assert_return (call $add (f32.const 0x1p-126) (f32.const inf)) (f32.const inf) (i32.const 464)) + (call $assert_return_nan (call $add (f32.const -0x1p-126) (f32.const -nan)) (i32.const 468)) + (call $assert_return_nan (call $add (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 472)) + (call $assert_return_nan (call $add (f32.const -0x1p-126) (f32.const nan)) (i32.const 476)) + (call $assert_return_nan (call $add (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 480)) + (call $assert_return_nan (call $add (f32.const 0x1p-126) (f32.const -nan)) (i32.const 484)) + (call $assert_return_nan (call $add (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 488)) + (call $assert_return_nan (call $add (f32.const 0x1p-126) (f32.const nan)) (i32.const 492)) + (call $assert_return_nan (call $add (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 496)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1) (i32.const 500)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1) (i32.const 504)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1) (i32.const 508)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1) (i32.const 512)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1) (i32.const 516)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1) (i32.const 520)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1) (i32.const 524)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1) (i32.const 528)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1) (i32.const 532)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1) (i32.const 536)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1) (i32.const 540)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1) (i32.const 544)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p+0) (i32.const 548)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 552)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x0p+0) (i32.const 556)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p+0) (i32.const 560)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1.8p+0) (i32.const 564)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1) (i32.const 568)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1) (i32.const 572)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1.8p+0) (i32.const 576)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.b21fb6p+2) (i32.const 580)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.721fb6p+2) (i32.const 584)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.721fb6p+2) (i32.const 588)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.b21fb6p+2) (i32.const 592)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 596)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 600)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 604)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 608)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const -inf)) (f32.const -inf) (i32.const 612)) + (call $assert_return (call $add (f32.const -0x1p-1) (f32.const inf)) (f32.const inf) (i32.const 616)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const -inf)) (f32.const -inf) (i32.const 620)) + (call $assert_return (call $add (f32.const 0x1p-1) (f32.const inf)) (f32.const inf) (i32.const 624)) + (call $assert_return_nan (call $add (f32.const -0x1p-1) (f32.const -nan)) (i32.const 628)) + (call $assert_return_nan (call $add (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 632)) + (call $assert_return_nan (call $add (f32.const -0x1p-1) (f32.const nan)) (i32.const 636)) + (call $assert_return_nan (call $add (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 640)) + (call $assert_return_nan (call $add (f32.const 0x1p-1) (f32.const -nan)) (i32.const 644)) + (call $assert_return_nan (call $add (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 648)) + (call $assert_return_nan (call $add (f32.const 0x1p-1) (f32.const nan)) (i32.const 652)) + (call $assert_return_nan (call $add (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 656)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0) (i32.const 660)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0) (i32.const 664)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0) (i32.const 668)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0) (i32.const 672)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 676)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0) (i32.const 680)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0) (i32.const 684)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 688)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 692)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0) (i32.const 696)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0) (i32.const 700)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 704)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1.8p+0) (i32.const 708)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 712)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 716)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1.8p+0) (i32.const 720)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+1) (i32.const 724)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 728)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0) (i32.const 732)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+1) (i32.const 736)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.d21fb6p+2) (i32.const 740)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.521fb6p+2) (i32.const 744)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.521fb6p+2) (i32.const 748)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.d21fb6p+2) (i32.const 752)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 756)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 760)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 764)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 768)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const -inf)) (f32.const -inf) (i32.const 772)) + (call $assert_return (call $add (f32.const -0x1p+0) (f32.const inf)) (f32.const inf) (i32.const 776)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const -inf)) (f32.const -inf) (i32.const 780)) + (call $assert_return (call $add (f32.const 0x1p+0) (f32.const inf)) (f32.const inf) (i32.const 784)) + (call $assert_return_nan (call $add (f32.const -0x1p+0) (f32.const -nan)) (i32.const 788)) + (call $assert_return_nan (call $add (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 792)) + (call $assert_return_nan (call $add (f32.const -0x1p+0) (f32.const nan)) (i32.const 796)) + (call $assert_return_nan (call $add (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 800)) + (call $assert_return_nan (call $add (f32.const 0x1p+0) (f32.const -nan)) (i32.const 804)) + (call $assert_return_nan (call $add (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 808)) + (call $assert_return_nan (call $add (f32.const 0x1p+0) (f32.const nan)) (i32.const 812)) + (call $assert_return_nan (call $add (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 816)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 820)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 824)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 828)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 832)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 836)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 840)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 844)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 848)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 852)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 856)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 860)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 864)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.b21fb6p+2) (i32.const 868)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.721fb6p+2) (i32.const 872)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.721fb6p+2) (i32.const 876)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.b21fb6p+2) (i32.const 880)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.d21fb6p+2) (i32.const 884)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.521fb6p+2) (i32.const 888)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.521fb6p+2) (i32.const 892)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.d21fb6p+2) (i32.const 896)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+3) (i32.const 900)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 904)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 908)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+3) (i32.const 912)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 916)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 920)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 924)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 928)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf) (i32.const 932)) + (call $assert_return (call $add (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const inf) (i32.const 936)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf) (i32.const 940)) + (call $assert_return (call $add (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const inf) (i32.const 944)) + (call $assert_return_nan (call $add (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 948)) + (call $assert_return_nan (call $add (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 952)) + (call $assert_return_nan (call $add (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 956)) + (call $assert_return_nan (call $add (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 960)) + (call $assert_return_nan (call $add (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 964)) + (call $assert_return_nan (call $add (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 968)) + (call $assert_return_nan (call $add (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 972)) + (call $assert_return_nan (call $add (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 976)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 980)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 984)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 988)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 992)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 996)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 1000)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 1004)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 1008)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 1012)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 1016)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 1020)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 1024)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 1028)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 1032)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 1036)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 1040)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 1044)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 1048)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 1052)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 1056)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 1060)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 1064)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 1068)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 1072)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 1076)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 1080)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 1084)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 1088)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -inf) (i32.const 1092)) + (call $assert_return (call $add (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const inf) (i32.const 1096)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -inf) (i32.const 1100)) + (call $assert_return (call $add (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const inf) (i32.const 1104)) + (call $assert_return_nan (call $add (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 1108)) + (call $assert_return_nan (call $add (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 1112)) + (call $assert_return_nan (call $add (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 1116)) + (call $assert_return_nan (call $add (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 1120)) + (call $assert_return_nan (call $add (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 1124)) + (call $assert_return_nan (call $add (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 1128)) + (call $assert_return_nan (call $add (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 1132)) + (call $assert_return_nan (call $add (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 1136)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 1140)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 1144)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x0p+0)) (f32.const inf) (i32.const 1148)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x0p+0)) (f32.const inf) (i32.const 1152)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 1156)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 1160)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x1p-149)) (f32.const inf) (i32.const 1164)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 1168)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 1172)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 1176)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x1p-126)) (f32.const inf) (i32.const 1180)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 1184)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 1188)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf) (i32.const 1192)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x1p-1)) (f32.const inf) (i32.const 1196)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 1200)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 1204)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf) (i32.const 1208)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x1p+0)) (f32.const inf) (i32.const 1212)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 1216)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 1220)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf) (i32.const 1224)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const inf) (i32.const 1228)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 1232)) + (call $assert_return (call $add (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 1236)) + (call $assert_return (call $add (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 1240)) + (call $assert_return (call $add (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 1244)) + (call $assert_return (call $add (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 1248)) + (call $assert_return (call $add (f32.const -inf) (f32.const -inf)) (f32.const -inf) (i32.const 1252)) + (call $assert_return_nan (call $add (f32.const -inf) (f32.const inf)) (i32.const 1256)) + (call $assert_return_nan (call $add (f32.const inf) (f32.const -inf)) (i32.const 1260)) + (call $assert_return (call $add (f32.const inf) (f32.const inf)) (f32.const inf) (i32.const 1264)) + (call $assert_return_nan (call $add (f32.const -inf) (f32.const -nan)) (i32.const 1268)) + (call $assert_return_nan (call $add (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 1272)) + (call $assert_return_nan (call $add (f32.const -inf) (f32.const nan)) (i32.const 1276)) + (call $assert_return_nan (call $add (f32.const -inf) (f32.const nan:0x200000)) (i32.const 1280)) + (call $assert_return_nan (call $add (f32.const inf) (f32.const -nan)) (i32.const 1284)) + (call $assert_return_nan (call $add (f32.const inf) (f32.const -nan:0x200000)) (i32.const 1288)) + (call $assert_return_nan (call $add (f32.const inf) (f32.const nan)) (i32.const 1292)) + (call $assert_return_nan (call $add (f32.const inf) (f32.const nan:0x200000)) (i32.const 1296)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x0p+0)) (i32.const 1300)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 1304)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x0p+0)) (i32.const 1308)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 1312)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x0p+0)) (i32.const 1316)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 1320)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x0p+0)) (i32.const 1324)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 1328)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x1p-149)) (i32.const 1332)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 1336)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x1p-149)) (i32.const 1340)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 1344)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x1p-149)) (i32.const 1348)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 1352)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x1p-149)) (i32.const 1356)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 1360)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x1p-126)) (i32.const 1364)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 1368)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x1p-126)) (i32.const 1372)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 1376)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x1p-126)) (i32.const 1380)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 1384)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x1p-126)) (i32.const 1388)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 1392)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x1p-1)) (i32.const 1396)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 1400)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x1p-1)) (i32.const 1404)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 1408)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x1p-1)) (i32.const 1412)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 1416)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x1p-1)) (i32.const 1420)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 1424)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x1p+0)) (i32.const 1428)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 1432)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x1p+0)) (i32.const 1436)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 1440)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x1p+0)) (i32.const 1444)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 1448)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x1p+0)) (i32.const 1452)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 1456)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 1460)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 1464)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 1468)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 1472)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 1476)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 1480)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 1484)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 1488)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 1492)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 1496)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 1500)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 1504)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 1508)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 1512)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 1516)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 1520)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -inf)) (i32.const 1524)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 1528)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const inf)) (i32.const 1532)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const inf)) (i32.const 1536)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -inf)) (i32.const 1540)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -inf)) (i32.const 1544)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const inf)) (i32.const 1548)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const inf)) (i32.const 1552)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -nan)) (i32.const 1556)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 1560)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 1564)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 1568)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const nan)) (i32.const 1572)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const nan)) (i32.const 1576)) + (call $assert_return_nan (call $add (f32.const -nan) (f32.const nan:0x200000)) (i32.const 1580)) + (call $assert_return_nan (call $add (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 1584)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -nan)) (i32.const 1588)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -nan)) (i32.const 1592)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const -nan:0x200000)) (i32.const 1596)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 1600)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const nan)) (i32.const 1604)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const nan)) (i32.const 1608)) + (call $assert_return_nan (call $add (f32.const nan) (f32.const nan:0x200000)) (i32.const 1612)) + (call $assert_return_nan (call $add (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 1616)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 1620)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 1624)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 1628)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 1632)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149) (i32.const 1636)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149) (i32.const 1640)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149) (i32.const 1644)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149) (i32.const 1648)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126) (i32.const 1652)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126) (i32.const 1656)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126) (i32.const 1660)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126) (i32.const 1664)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1668)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 1672)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1676)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 1680)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 1684)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 1688)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 1692)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 1696)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1700)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 1704)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1708)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 1712)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1716)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 1720)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1724)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 1728)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const -inf)) (f32.const inf) (i32.const 1732)) + (call $assert_return (call $sub (f32.const -0x0p+0) (f32.const inf)) (f32.const -inf) (i32.const 1736)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const -inf)) (f32.const inf) (i32.const 1740)) + (call $assert_return (call $sub (f32.const 0x0p+0) (f32.const inf)) (f32.const -inf) (i32.const 1744)) + (call $assert_return_nan (call $sub (f32.const -0x0p+0) (f32.const -nan)) (i32.const 1748)) + (call $assert_return_nan (call $sub (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 1752)) + (call $assert_return_nan (call $sub (f32.const -0x0p+0) (f32.const nan)) (i32.const 1756)) + (call $assert_return_nan (call $sub (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 1760)) + (call $assert_return_nan (call $sub (f32.const 0x0p+0) (f32.const -nan)) (i32.const 1764)) + (call $assert_return_nan (call $sub (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 1768)) + (call $assert_return_nan (call $sub (f32.const 0x0p+0) (f32.const nan)) (i32.const 1772)) + (call $assert_return_nan (call $sub (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 1776)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149) (i32.const 1780)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149) (i32.const 1784)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149) (i32.const 1788)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149) (i32.const 1792)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 1796)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p-148) (i32.const 1800)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p-148) (i32.const 1804)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 1808)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1.fffffcp-127) (i32.const 1812)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1.000002p-126) (i32.const 1816)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1.000002p-126) (i32.const 1820)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1.fffffcp-127) (i32.const 1824)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1828)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 1832)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1836)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 1840)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 1844)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 1848)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 1852)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 1856)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1860)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 1864)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1868)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 1872)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1876)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 1880)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1884)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 1888)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const -inf)) (f32.const inf) (i32.const 1892)) + (call $assert_return (call $sub (f32.const -0x1p-149) (f32.const inf)) (f32.const -inf) (i32.const 1896)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const -inf)) (f32.const inf) (i32.const 1900)) + (call $assert_return (call $sub (f32.const 0x1p-149) (f32.const inf)) (f32.const -inf) (i32.const 1904)) + (call $assert_return_nan (call $sub (f32.const -0x1p-149) (f32.const -nan)) (i32.const 1908)) + (call $assert_return_nan (call $sub (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 1912)) + (call $assert_return_nan (call $sub (f32.const -0x1p-149) (f32.const nan)) (i32.const 1916)) + (call $assert_return_nan (call $sub (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 1920)) + (call $assert_return_nan (call $sub (f32.const 0x1p-149) (f32.const -nan)) (i32.const 1924)) + (call $assert_return_nan (call $sub (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 1928)) + (call $assert_return_nan (call $sub (f32.const 0x1p-149) (f32.const nan)) (i32.const 1932)) + (call $assert_return_nan (call $sub (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 1936)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126) (i32.const 1940)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126) (i32.const 1944)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126) (i32.const 1948)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126) (i32.const 1952)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1.fffffcp-127) (i32.const 1956)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1.000002p-126) (i32.const 1960)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1.000002p-126) (i32.const 1964)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.fffffcp-127) (i32.const 1968)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 1972)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p-125) (i32.const 1976)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p-125) (i32.const 1980)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 1984)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1988)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 1992)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1996)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 2000)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 2004)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 2008)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 2012)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 2016)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 2020)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 2024)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 2028)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 2032)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2036)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2040)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2044)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2048)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const -inf)) (f32.const inf) (i32.const 2052)) + (call $assert_return (call $sub (f32.const -0x1p-126) (f32.const inf)) (f32.const -inf) (i32.const 2056)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const -inf)) (f32.const inf) (i32.const 2060)) + (call $assert_return (call $sub (f32.const 0x1p-126) (f32.const inf)) (f32.const -inf) (i32.const 2064)) + (call $assert_return_nan (call $sub (f32.const -0x1p-126) (f32.const -nan)) (i32.const 2068)) + (call $assert_return_nan (call $sub (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 2072)) + (call $assert_return_nan (call $sub (f32.const -0x1p-126) (f32.const nan)) (i32.const 2076)) + (call $assert_return_nan (call $sub (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 2080)) + (call $assert_return_nan (call $sub (f32.const 0x1p-126) (f32.const -nan)) (i32.const 2084)) + (call $assert_return_nan (call $sub (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 2088)) + (call $assert_return_nan (call $sub (f32.const 0x1p-126) (f32.const nan)) (i32.const 2092)) + (call $assert_return_nan (call $sub (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 2096)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1) (i32.const 2100)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1) (i32.const 2104)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1) (i32.const 2108)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1) (i32.const 2112)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1) (i32.const 2116)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1) (i32.const 2120)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1) (i32.const 2124)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1) (i32.const 2128)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1) (i32.const 2132)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1) (i32.const 2136)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1) (i32.const 2140)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1) (i32.const 2144)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x0p+0) (i32.const 2148)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p+0) (i32.const 2152)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p+0) (i32.const 2156)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 2160)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1) (i32.const 2164)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1.8p+0) (i32.const 2168)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1.8p+0) (i32.const 2172)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1) (i32.const 2176)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.721fb6p+2) (i32.const 2180)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.b21fb6p+2) (i32.const 2184)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.b21fb6p+2) (i32.const 2188)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.721fb6p+2) (i32.const 2192)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2196)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2200)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2204)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2208)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const -inf)) (f32.const inf) (i32.const 2212)) + (call $assert_return (call $sub (f32.const -0x1p-1) (f32.const inf)) (f32.const -inf) (i32.const 2216)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const -inf)) (f32.const inf) (i32.const 2220)) + (call $assert_return (call $sub (f32.const 0x1p-1) (f32.const inf)) (f32.const -inf) (i32.const 2224)) + (call $assert_return_nan (call $sub (f32.const -0x1p-1) (f32.const -nan)) (i32.const 2228)) + (call $assert_return_nan (call $sub (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 2232)) + (call $assert_return_nan (call $sub (f32.const -0x1p-1) (f32.const nan)) (i32.const 2236)) + (call $assert_return_nan (call $sub (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 2240)) + (call $assert_return_nan (call $sub (f32.const 0x1p-1) (f32.const -nan)) (i32.const 2244)) + (call $assert_return_nan (call $sub (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 2248)) + (call $assert_return_nan (call $sub (f32.const 0x1p-1) (f32.const nan)) (i32.const 2252)) + (call $assert_return_nan (call $sub (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 2256)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0) (i32.const 2260)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0) (i32.const 2264)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0) (i32.const 2268)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0) (i32.const 2272)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 2276)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0) (i32.const 2280)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0) (i32.const 2284)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 2288)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 2292)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0) (i32.const 2296)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0) (i32.const 2300)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 2304)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 2308)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1.8p+0) (i32.const 2312)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1.8p+0) (i32.const 2316)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 2320)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0) (i32.const 2324)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+1) (i32.const 2328)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+1) (i32.const 2332)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 2336)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.521fb6p+2) (i32.const 2340)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.d21fb6p+2) (i32.const 2344)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.d21fb6p+2) (i32.const 2348)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.521fb6p+2) (i32.const 2352)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2356)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2360)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2364)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2368)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const -inf)) (f32.const inf) (i32.const 2372)) + (call $assert_return (call $sub (f32.const -0x1p+0) (f32.const inf)) (f32.const -inf) (i32.const 2376)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const -inf)) (f32.const inf) (i32.const 2380)) + (call $assert_return (call $sub (f32.const 0x1p+0) (f32.const inf)) (f32.const -inf) (i32.const 2384)) + (call $assert_return_nan (call $sub (f32.const -0x1p+0) (f32.const -nan)) (i32.const 2388)) + (call $assert_return_nan (call $sub (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 2392)) + (call $assert_return_nan (call $sub (f32.const -0x1p+0) (f32.const nan)) (i32.const 2396)) + (call $assert_return_nan (call $sub (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 2400)) + (call $assert_return_nan (call $sub (f32.const 0x1p+0) (f32.const -nan)) (i32.const 2404)) + (call $assert_return_nan (call $sub (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 2408)) + (call $assert_return_nan (call $sub (f32.const 0x1p+0) (f32.const nan)) (i32.const 2412)) + (call $assert_return_nan (call $sub (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 2416)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 2420)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 2424)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 2428)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 2432)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 2436)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 2440)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 2444)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 2448)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 2452)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 2456)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 2460)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 2464)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.721fb6p+2) (i32.const 2468)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.b21fb6p+2) (i32.const 2472)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.b21fb6p+2) (i32.const 2476)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.721fb6p+2) (i32.const 2480)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.521fb6p+2) (i32.const 2484)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.d21fb6p+2) (i32.const 2488)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.d21fb6p+2) (i32.const 2492)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.521fb6p+2) (i32.const 2496)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 2500)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+3) (i32.const 2504)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+3) (i32.const 2508)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 2512)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2516)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2520)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 2524)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 2528)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const inf) (i32.const 2532)) + (call $assert_return (call $sub (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -inf) (i32.const 2536)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const inf) (i32.const 2540)) + (call $assert_return (call $sub (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const -inf) (i32.const 2544)) + (call $assert_return_nan (call $sub (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 2548)) + (call $assert_return_nan (call $sub (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 2552)) + (call $assert_return_nan (call $sub (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 2556)) + (call $assert_return_nan (call $sub (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 2560)) + (call $assert_return_nan (call $sub (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 2564)) + (call $assert_return_nan (call $sub (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 2568)) + (call $assert_return_nan (call $sub (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 2572)) + (call $assert_return_nan (call $sub (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 2576)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 2580)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 2584)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 2588)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 2592)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 2596)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 2600)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 2604)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 2608)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 2612)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 2616)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 2620)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 2624)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 2628)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 2632)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 2636)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 2640)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 2644)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 2648)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 2652)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 2656)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 2660)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 2664)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 2668)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 2672)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 2676)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 2680)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 2684)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 2688)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const inf) (i32.const 2692)) + (call $assert_return (call $sub (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -inf) (i32.const 2696)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const inf) (i32.const 2700)) + (call $assert_return (call $sub (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const -inf) (i32.const 2704)) + (call $assert_return_nan (call $sub (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 2708)) + (call $assert_return_nan (call $sub (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 2712)) + (call $assert_return_nan (call $sub (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 2716)) + (call $assert_return_nan (call $sub (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 2720)) + (call $assert_return_nan (call $sub (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 2724)) + (call $assert_return_nan (call $sub (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 2728)) + (call $assert_return_nan (call $sub (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 2732)) + (call $assert_return_nan (call $sub (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 2736)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 2740)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 2744)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x0p+0)) (f32.const inf) (i32.const 2748)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x0p+0)) (f32.const inf) (i32.const 2752)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 2756)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 2760)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x1p-149)) (f32.const inf) (i32.const 2764)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 2768)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 2772)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 2776)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x1p-126)) (f32.const inf) (i32.const 2780)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 2784)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 2788)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf) (i32.const 2792)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x1p-1)) (f32.const inf) (i32.const 2796)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 2800)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 2804)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf) (i32.const 2808)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x1p+0)) (f32.const inf) (i32.const 2812)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 2816)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 2820)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf) (i32.const 2824)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const inf) (i32.const 2828)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 2832)) + (call $assert_return (call $sub (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 2836)) + (call $assert_return (call $sub (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 2840)) + (call $assert_return (call $sub (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 2844)) + (call $assert_return (call $sub (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 2848)) + (call $assert_return_nan (call $sub (f32.const -inf) (f32.const -inf)) (i32.const 2852)) + (call $assert_return (call $sub (f32.const -inf) (f32.const inf)) (f32.const -inf) (i32.const 2856)) + (call $assert_return (call $sub (f32.const inf) (f32.const -inf)) (f32.const inf) (i32.const 2860)) + (call $assert_return_nan (call $sub (f32.const inf) (f32.const inf)) (i32.const 2864)) + (call $assert_return_nan (call $sub (f32.const -inf) (f32.const -nan)) (i32.const 2868)) + (call $assert_return_nan (call $sub (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 2872)) + (call $assert_return_nan (call $sub (f32.const -inf) (f32.const nan)) (i32.const 2876)) + (call $assert_return_nan (call $sub (f32.const -inf) (f32.const nan:0x200000)) (i32.const 2880)) + (call $assert_return_nan (call $sub (f32.const inf) (f32.const -nan)) (i32.const 2884)) + (call $assert_return_nan (call $sub (f32.const inf) (f32.const -nan:0x200000)) (i32.const 2888)) + (call $assert_return_nan (call $sub (f32.const inf) (f32.const nan)) (i32.const 2892)) + (call $assert_return_nan (call $sub (f32.const inf) (f32.const nan:0x200000)) (i32.const 2896)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x0p+0)) (i32.const 2900)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 2904)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x0p+0)) (i32.const 2908)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 2912)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x0p+0)) (i32.const 2916)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 2920)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x0p+0)) (i32.const 2924)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 2928)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x1p-149)) (i32.const 2932)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 2936)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x1p-149)) (i32.const 2940)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 2944)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x1p-149)) (i32.const 2948)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 2952)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x1p-149)) (i32.const 2956)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 2960)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x1p-126)) (i32.const 2964)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 2968)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x1p-126)) (i32.const 2972)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 2976)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x1p-126)) (i32.const 2980)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 2984)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x1p-126)) (i32.const 2988)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 2992)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x1p-1)) (i32.const 2996)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 3000)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x1p-1)) (i32.const 3004)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 3008)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x1p-1)) (i32.const 3012)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 3016)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x1p-1)) (i32.const 3020)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 3024)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x1p+0)) (i32.const 3028)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 3032)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x1p+0)) (i32.const 3036)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 3040)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x1p+0)) (i32.const 3044)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 3048)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x1p+0)) (i32.const 3052)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 3056)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 3060)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 3064)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 3068)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 3072)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 3076)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 3080)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 3084)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 3088)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 3092)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 3096)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 3100)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 3104)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 3108)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 3112)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 3116)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 3120)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -inf)) (i32.const 3124)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 3128)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const inf)) (i32.const 3132)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const inf)) (i32.const 3136)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -inf)) (i32.const 3140)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -inf)) (i32.const 3144)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const inf)) (i32.const 3148)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const inf)) (i32.const 3152)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -nan)) (i32.const 3156)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 3160)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 3164)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 3168)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const nan)) (i32.const 3172)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const nan)) (i32.const 3176)) + (call $assert_return_nan (call $sub (f32.const -nan) (f32.const nan:0x200000)) (i32.const 3180)) + (call $assert_return_nan (call $sub (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 3184)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -nan)) (i32.const 3188)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -nan)) (i32.const 3192)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const -nan:0x200000)) (i32.const 3196)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 3200)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const nan)) (i32.const 3204)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const nan)) (i32.const 3208)) + (call $assert_return_nan (call $sub (f32.const nan) (f32.const nan:0x200000)) (i32.const 3212)) + (call $assert_return_nan (call $sub (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 3216)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 3220)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 3224)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 3228)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 3232)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 3236)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0) (i32.const 3240)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 3244)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 3248)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 3252)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0) (i32.const 3256)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 3260)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 3264)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0) (i32.const 3268)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0) (i32.const 3272)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 3276)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 3280)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0) (i32.const 3284)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0) (i32.const 3288)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0) (i32.const 3292)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 3296)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 3300)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 3304)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 3308)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 3312)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 3316)) + (call $assert_return (call $mul (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 3320)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 3324)) + (call $assert_return (call $mul (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 3328)) + (call $assert_return_nan (call $mul (f32.const -0x0p+0) (f32.const -inf)) (i32.const 3332)) + (call $assert_return_nan (call $mul (f32.const -0x0p+0) (f32.const inf)) (i32.const 3336)) + (call $assert_return_nan (call $mul (f32.const 0x0p+0) (f32.const -inf)) (i32.const 3340)) + (call $assert_return_nan (call $mul (f32.const 0x0p+0) (f32.const inf)) (i32.const 3344)) + (call $assert_return_nan (call $mul (f32.const -0x0p+0) (f32.const -nan)) (i32.const 3348)) + (call $assert_return_nan (call $mul (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 3352)) + (call $assert_return_nan (call $mul (f32.const -0x0p+0) (f32.const nan)) (i32.const 3356)) + (call $assert_return_nan (call $mul (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 3360)) + (call $assert_return_nan (call $mul (f32.const 0x0p+0) (f32.const -nan)) (i32.const 3364)) + (call $assert_return_nan (call $mul (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 3368)) + (call $assert_return_nan (call $mul (f32.const 0x0p+0) (f32.const nan)) (i32.const 3372)) + (call $assert_return_nan (call $mul (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 3376)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 3380)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 3384)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 3388)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 3392)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 3396)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x0p+0) (i32.const 3400)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 3404)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 3408)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 3412)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x0p+0) (i32.const 3416)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 3420)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 3424)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x0p+0) (i32.const 3428)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x0p+0) (i32.const 3432)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 3436)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 3440)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149) (i32.const 3444)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149) (i32.const 3448)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149) (i32.const 3452)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149) (i32.const 3456)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.8p-147) (i32.const 3460)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.8p-147) (i32.const 3464)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p-147) (i32.const 3468)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p-147) (i32.const 3472)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep-22) (i32.const 3476)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep-22) (i32.const 3480)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep-22) (i32.const 3484)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep-22) (i32.const 3488)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const -inf)) (f32.const inf) (i32.const 3492)) + (call $assert_return (call $mul (f32.const -0x1p-149) (f32.const inf)) (f32.const -inf) (i32.const 3496)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const -inf)) (f32.const -inf) (i32.const 3500)) + (call $assert_return (call $mul (f32.const 0x1p-149) (f32.const inf)) (f32.const inf) (i32.const 3504)) + (call $assert_return_nan (call $mul (f32.const -0x1p-149) (f32.const -nan)) (i32.const 3508)) + (call $assert_return_nan (call $mul (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 3512)) + (call $assert_return_nan (call $mul (f32.const -0x1p-149) (f32.const nan)) (i32.const 3516)) + (call $assert_return_nan (call $mul (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 3520)) + (call $assert_return_nan (call $mul (f32.const 0x1p-149) (f32.const -nan)) (i32.const 3524)) + (call $assert_return_nan (call $mul (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 3528)) + (call $assert_return_nan (call $mul (f32.const 0x1p-149) (f32.const nan)) (i32.const 3532)) + (call $assert_return_nan (call $mul (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 3536)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 3540)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 3544)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 3548)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 3552)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 3556)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x0p+0) (i32.const 3560)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 3564)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 3568)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 3572)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x0p+0) (i32.const 3576)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 3580)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 3584)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-127) (i32.const 3588)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-127) (i32.const 3592)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-127) (i32.const 3596)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-127) (i32.const 3600)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126) (i32.const 3604)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126) (i32.const 3608)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126) (i32.const 3612)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126) (i32.const 3616)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p-124) (i32.const 3620)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p-124) (i32.const 3624)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p-124) (i32.const 3628)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p-124) (i32.const 3632)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+1) (i32.const 3636)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+1) (i32.const 3640)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+1) (i32.const 3644)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+1) (i32.const 3648)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const -inf)) (f32.const inf) (i32.const 3652)) + (call $assert_return (call $mul (f32.const -0x1p-126) (f32.const inf)) (f32.const -inf) (i32.const 3656)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const -inf)) (f32.const -inf) (i32.const 3660)) + (call $assert_return (call $mul (f32.const 0x1p-126) (f32.const inf)) (f32.const inf) (i32.const 3664)) + (call $assert_return_nan (call $mul (f32.const -0x1p-126) (f32.const -nan)) (i32.const 3668)) + (call $assert_return_nan (call $mul (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 3672)) + (call $assert_return_nan (call $mul (f32.const -0x1p-126) (f32.const nan)) (i32.const 3676)) + (call $assert_return_nan (call $mul (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 3680)) + (call $assert_return_nan (call $mul (f32.const 0x1p-126) (f32.const -nan)) (i32.const 3684)) + (call $assert_return_nan (call $mul (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 3688)) + (call $assert_return_nan (call $mul (f32.const 0x1p-126) (f32.const nan)) (i32.const 3692)) + (call $assert_return_nan (call $mul (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 3696)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 3700)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 3704)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 3708)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 3712)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 3716)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x0p+0) (i32.const 3720)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 3724)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 3728)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-127) (i32.const 3732)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-127) (i32.const 3736)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-127) (i32.const 3740)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-127) (i32.const 3744)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p-2) (i32.const 3748)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p-2) (i32.const 3752)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-2) (i32.const 3756)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-2) (i32.const 3760)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1) (i32.const 3764)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1) (i32.const 3768)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1) (i32.const 3772)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1) (i32.const 3776)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+1) (i32.const 3780)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+1) (i32.const 3784)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+1) (i32.const 3788)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+1) (i32.const 3792)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+126) (i32.const 3796)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+126) (i32.const 3800)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+126) (i32.const 3804)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+126) (i32.const 3808)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const -inf)) (f32.const inf) (i32.const 3812)) + (call $assert_return (call $mul (f32.const -0x1p-1) (f32.const inf)) (f32.const -inf) (i32.const 3816)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const -inf)) (f32.const -inf) (i32.const 3820)) + (call $assert_return (call $mul (f32.const 0x1p-1) (f32.const inf)) (f32.const inf) (i32.const 3824)) + (call $assert_return_nan (call $mul (f32.const -0x1p-1) (f32.const -nan)) (i32.const 3828)) + (call $assert_return_nan (call $mul (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 3832)) + (call $assert_return_nan (call $mul (f32.const -0x1p-1) (f32.const nan)) (i32.const 3836)) + (call $assert_return_nan (call $mul (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 3840)) + (call $assert_return_nan (call $mul (f32.const 0x1p-1) (f32.const -nan)) (i32.const 3844)) + (call $assert_return_nan (call $mul (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 3848)) + (call $assert_return_nan (call $mul (f32.const 0x1p-1) (f32.const nan)) (i32.const 3852)) + (call $assert_return_nan (call $mul (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 3856)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 3860)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 3864)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 3868)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 3872)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149) (i32.const 3876)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149) (i32.const 3880)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 3884)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 3888)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126) (i32.const 3892)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126) (i32.const 3896)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 3900)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 3904)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 3908)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 3912)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 3916)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 3920)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 3924)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 3928)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 3932)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 3936)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 3940)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 3944)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 3948)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 3952)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 3956)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 3960)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 3964)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 3968)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const -inf)) (f32.const inf) (i32.const 3972)) + (call $assert_return (call $mul (f32.const -0x1p+0) (f32.const inf)) (f32.const -inf) (i32.const 3976)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const -inf)) (f32.const -inf) (i32.const 3980)) + (call $assert_return (call $mul (f32.const 0x1p+0) (f32.const inf)) (f32.const inf) (i32.const 3984)) + (call $assert_return_nan (call $mul (f32.const -0x1p+0) (f32.const -nan)) (i32.const 3988)) + (call $assert_return_nan (call $mul (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 3992)) + (call $assert_return_nan (call $mul (f32.const -0x1p+0) (f32.const nan)) (i32.const 3996)) + (call $assert_return_nan (call $mul (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 4000)) + (call $assert_return_nan (call $mul (f32.const 0x1p+0) (f32.const -nan)) (i32.const 4004)) + (call $assert_return_nan (call $mul (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 4008)) + (call $assert_return_nan (call $mul (f32.const 0x1p+0) (f32.const nan)) (i32.const 4012)) + (call $assert_return_nan (call $mul (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 4016)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 4020)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 4024)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 4028)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 4032)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.8p-147) (i32.const 4036)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.8p-147) (i32.const 4040)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.8p-147) (i32.const 4044)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.8p-147) (i32.const 4048)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p-124) (i32.const 4052)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p-124) (i32.const 4056)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p-124) (i32.const 4060)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p-124) (i32.const 4064)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+1) (i32.const 4068)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+1) (i32.const 4072)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+1) (i32.const 4076)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+1) (i32.const 4080)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 4084)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 4088)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 4092)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 4096)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.3bd3cep+5) (i32.const 4100)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.3bd3cep+5) (i32.const 4104)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.3bd3cep+5) (i32.const 4108)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.3bd3cep+5) (i32.const 4112)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 4116)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 4120)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 4124)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 4128)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const inf) (i32.const 4132)) + (call $assert_return (call $mul (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -inf) (i32.const 4136)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf) (i32.const 4140)) + (call $assert_return (call $mul (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const inf) (i32.const 4144)) + (call $assert_return_nan (call $mul (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 4148)) + (call $assert_return_nan (call $mul (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 4152)) + (call $assert_return_nan (call $mul (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 4156)) + (call $assert_return_nan (call $mul (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 4160)) + (call $assert_return_nan (call $mul (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 4164)) + (call $assert_return_nan (call $mul (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 4168)) + (call $assert_return_nan (call $mul (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 4172)) + (call $assert_return_nan (call $mul (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 4176)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 4180)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 4184)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 4188)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 4192)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep-22) (i32.const 4196)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep-22) (i32.const 4200)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep-22) (i32.const 4204)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep-22) (i32.const 4208)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+1) (i32.const 4212)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+1) (i32.const 4216)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+1) (i32.const 4220)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+1) (i32.const 4224)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+126) (i32.const 4228)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+126) (i32.const 4232)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+126) (i32.const 4236)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+126) (i32.const 4240)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 4244)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 4248)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 4252)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 4256)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const inf) (i32.const 4260)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -inf) (i32.const 4264)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 4268)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 4272)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 4276)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 4280)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 4284)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 4288)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const inf) (i32.const 4292)) + (call $assert_return (call $mul (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -inf) (i32.const 4296)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -inf) (i32.const 4300)) + (call $assert_return (call $mul (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const inf) (i32.const 4304)) + (call $assert_return_nan (call $mul (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 4308)) + (call $assert_return_nan (call $mul (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 4312)) + (call $assert_return_nan (call $mul (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 4316)) + (call $assert_return_nan (call $mul (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 4320)) + (call $assert_return_nan (call $mul (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 4324)) + (call $assert_return_nan (call $mul (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 4328)) + (call $assert_return_nan (call $mul (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 4332)) + (call $assert_return_nan (call $mul (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 4336)) + (call $assert_return_nan (call $mul (f32.const -inf) (f32.const -0x0p+0)) (i32.const 4340)) + (call $assert_return_nan (call $mul (f32.const -inf) (f32.const 0x0p+0)) (i32.const 4344)) + (call $assert_return_nan (call $mul (f32.const inf) (f32.const -0x0p+0)) (i32.const 4348)) + (call $assert_return_nan (call $mul (f32.const inf) (f32.const 0x0p+0)) (i32.const 4352)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -0x1p-149)) (f32.const inf) (i32.const 4356)) + (call $assert_return (call $mul (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 4360)) + (call $assert_return (call $mul (f32.const inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 4364)) + (call $assert_return (call $mul (f32.const inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 4368)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -0x1p-126)) (f32.const inf) (i32.const 4372)) + (call $assert_return (call $mul (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 4376)) + (call $assert_return (call $mul (f32.const inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 4380)) + (call $assert_return (call $mul (f32.const inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 4384)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -0x1p-1)) (f32.const inf) (i32.const 4388)) + (call $assert_return (call $mul (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf) (i32.const 4392)) + (call $assert_return (call $mul (f32.const inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 4396)) + (call $assert_return (call $mul (f32.const inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 4400)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -0x1p+0)) (f32.const inf) (i32.const 4404)) + (call $assert_return (call $mul (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf) (i32.const 4408)) + (call $assert_return (call $mul (f32.const inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 4412)) + (call $assert_return (call $mul (f32.const inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 4416)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const inf) (i32.const 4420)) + (call $assert_return (call $mul (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf) (i32.const 4424)) + (call $assert_return (call $mul (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 4428)) + (call $assert_return (call $mul (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 4432)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 4436)) + (call $assert_return (call $mul (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 4440)) + (call $assert_return (call $mul (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 4444)) + (call $assert_return (call $mul (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 4448)) + (call $assert_return (call $mul (f32.const -inf) (f32.const -inf)) (f32.const inf) (i32.const 4452)) + (call $assert_return (call $mul (f32.const -inf) (f32.const inf)) (f32.const -inf) (i32.const 4456)) + (call $assert_return (call $mul (f32.const inf) (f32.const -inf)) (f32.const -inf) (i32.const 4460)) + (call $assert_return (call $mul (f32.const inf) (f32.const inf)) (f32.const inf) (i32.const 4464)) + (call $assert_return_nan (call $mul (f32.const -inf) (f32.const -nan)) (i32.const 4468)) + (call $assert_return_nan (call $mul (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 4472)) + (call $assert_return_nan (call $mul (f32.const -inf) (f32.const nan)) (i32.const 4476)) + (call $assert_return_nan (call $mul (f32.const -inf) (f32.const nan:0x200000)) (i32.const 4480)) + (call $assert_return_nan (call $mul (f32.const inf) (f32.const -nan)) (i32.const 4484)) + (call $assert_return_nan (call $mul (f32.const inf) (f32.const -nan:0x200000)) (i32.const 4488)) + (call $assert_return_nan (call $mul (f32.const inf) (f32.const nan)) (i32.const 4492)) + (call $assert_return_nan (call $mul (f32.const inf) (f32.const nan:0x200000)) (i32.const 4496)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x0p+0)) (i32.const 4500)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 4504)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x0p+0)) (i32.const 4508)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 4512)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x0p+0)) (i32.const 4516)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 4520)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x0p+0)) (i32.const 4524)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 4528)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x1p-149)) (i32.const 4532)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 4536)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x1p-149)) (i32.const 4540)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 4544)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x1p-149)) (i32.const 4548)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 4552)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x1p-149)) (i32.const 4556)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 4560)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x1p-126)) (i32.const 4564)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 4568)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x1p-126)) (i32.const 4572)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 4576)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x1p-126)) (i32.const 4580)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 4584)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x1p-126)) (i32.const 4588)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 4592)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x1p-1)) (i32.const 4596)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 4600)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x1p-1)) (i32.const 4604)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 4608)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x1p-1)) (i32.const 4612)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 4616)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x1p-1)) (i32.const 4620)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 4624)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x1p+0)) (i32.const 4628)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 4632)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x1p+0)) (i32.const 4636)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 4640)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x1p+0)) (i32.const 4644)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 4648)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x1p+0)) (i32.const 4652)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 4656)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 4660)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 4664)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 4668)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 4672)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 4676)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 4680)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 4684)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 4688)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 4692)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 4696)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 4700)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 4704)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 4708)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 4712)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 4716)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 4720)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -inf)) (i32.const 4724)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 4728)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const inf)) (i32.const 4732)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const inf)) (i32.const 4736)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -inf)) (i32.const 4740)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -inf)) (i32.const 4744)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const inf)) (i32.const 4748)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const inf)) (i32.const 4752)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -nan)) (i32.const 4756)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 4760)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 4764)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 4768)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const nan)) (i32.const 4772)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const nan)) (i32.const 4776)) + (call $assert_return_nan (call $mul (f32.const -nan) (f32.const nan:0x200000)) (i32.const 4780)) + (call $assert_return_nan (call $mul (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 4784)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -nan)) (i32.const 4788)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -nan)) (i32.const 4792)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const -nan:0x200000)) (i32.const 4796)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 4800)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const nan)) (i32.const 4804)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const nan)) (i32.const 4808)) + (call $assert_return_nan (call $mul (f32.const nan) (f32.const nan:0x200000)) (i32.const 4812)) + (call $assert_return_nan (call $mul (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 4816)) + (call $assert_return_nan (call $div (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 4820)) + (call $assert_return_nan (call $div (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 4824)) + (call $assert_return_nan (call $div (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 4828)) + (call $assert_return_nan (call $div (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 4832)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 4836)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0) (i32.const 4840)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 4844)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 4848)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 4852)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0) (i32.const 4856)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 4860)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 4864)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0) (i32.const 4868)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0) (i32.const 4872)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 4876)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 4880)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0) (i32.const 4884)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0) (i32.const 4888)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0) (i32.const 4892)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 4896)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 4900)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 4904)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 4908)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 4912)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 4916)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 4920)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 4924)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 4928)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 4932)) + (call $assert_return (call $div (f32.const -0x0p+0) (f32.const inf)) (f32.const -0x0p+0) (i32.const 4936)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 4940)) + (call $assert_return (call $div (f32.const 0x0p+0) (f32.const inf)) (f32.const 0x0p+0) (i32.const 4944)) + (call $assert_return_nan (call $div (f32.const -0x0p+0) (f32.const -nan)) (i32.const 4948)) + (call $assert_return_nan (call $div (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 4952)) + (call $assert_return_nan (call $div (f32.const -0x0p+0) (f32.const nan)) (i32.const 4956)) + (call $assert_return_nan (call $div (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 4960)) + (call $assert_return_nan (call $div (f32.const 0x0p+0) (f32.const -nan)) (i32.const 4964)) + (call $assert_return_nan (call $div (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 4968)) + (call $assert_return_nan (call $div (f32.const 0x0p+0) (f32.const nan)) (i32.const 4972)) + (call $assert_return_nan (call $div (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 4976)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const inf) (i32.const 4980)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 4984)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 4988)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const inf) (i32.const 4992)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p+0) (i32.const 4996)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p+0) (i32.const 5000)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 5004)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 5008)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1p-23) (i32.const 5012)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1p-23) (i32.const 5016)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-23) (i32.const 5020)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-23) (i32.const 5024)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-148) (i32.const 5028)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-148) (i32.const 5032)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-148) (i32.const 5036)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-148) (i32.const 5040)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149) (i32.const 5044)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149) (i32.const 5048)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149) (i32.const 5052)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149) (i32.const 5056)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 5060)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 5064)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 5068)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 5072)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 5076)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 5080)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 5084)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 5088)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 5092)) + (call $assert_return (call $div (f32.const -0x1p-149) (f32.const inf)) (f32.const -0x0p+0) (i32.const 5096)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 5100)) + (call $assert_return (call $div (f32.const 0x1p-149) (f32.const inf)) (f32.const 0x0p+0) (i32.const 5104)) + (call $assert_return_nan (call $div (f32.const -0x1p-149) (f32.const -nan)) (i32.const 5108)) + (call $assert_return_nan (call $div (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 5112)) + (call $assert_return_nan (call $div (f32.const -0x1p-149) (f32.const nan)) (i32.const 5116)) + (call $assert_return_nan (call $div (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 5120)) + (call $assert_return_nan (call $div (f32.const 0x1p-149) (f32.const -nan)) (i32.const 5124)) + (call $assert_return_nan (call $div (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 5128)) + (call $assert_return_nan (call $div (f32.const 0x1p-149) (f32.const nan)) (i32.const 5132)) + (call $assert_return_nan (call $div (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 5136)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const inf) (i32.const 5140)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 5144)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 5148)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const inf) (i32.const 5152)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1p+23) (i32.const 5156)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1p+23) (i32.const 5160)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p+23) (i32.const 5164)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p+23) (i32.const 5168)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p+0) (i32.const 5172)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p+0) (i32.const 5176)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 5180)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 5184)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-125) (i32.const 5188)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-125) (i32.const 5192)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-125) (i32.const 5196)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-125) (i32.const 5200)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126) (i32.const 5204)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126) (i32.const 5208)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126) (i32.const 5212)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126) (i32.const 5216)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f3p-129) (i32.const 5220)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f3p-129) (i32.const 5224)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f3p-129) (i32.const 5228)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f3p-129) (i32.const 5232)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 5236)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 5240)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 5244)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 5248)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 5252)) + (call $assert_return (call $div (f32.const -0x1p-126) (f32.const inf)) (f32.const -0x0p+0) (i32.const 5256)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 5260)) + (call $assert_return (call $div (f32.const 0x1p-126) (f32.const inf)) (f32.const 0x0p+0) (i32.const 5264)) + (call $assert_return_nan (call $div (f32.const -0x1p-126) (f32.const -nan)) (i32.const 5268)) + (call $assert_return_nan (call $div (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 5272)) + (call $assert_return_nan (call $div (f32.const -0x1p-126) (f32.const nan)) (i32.const 5276)) + (call $assert_return_nan (call $div (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 5280)) + (call $assert_return_nan (call $div (f32.const 0x1p-126) (f32.const -nan)) (i32.const 5284)) + (call $assert_return_nan (call $div (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 5288)) + (call $assert_return_nan (call $div (f32.const 0x1p-126) (f32.const nan)) (i32.const 5292)) + (call $assert_return_nan (call $div (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 5296)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const inf) (i32.const 5300)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 5304)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 5308)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const inf) (i32.const 5312)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const inf) (i32.const 5316)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 5320)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 5324)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const inf) (i32.const 5328)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p+125) (i32.const 5332)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p+125) (i32.const 5336)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p+125) (i32.const 5340)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p+125) (i32.const 5344)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p+0) (i32.const 5348)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p+0) (i32.const 5352)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p+0) (i32.const 5356)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p+0) (i32.const 5360)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1) (i32.const 5364)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1) (i32.const 5368)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1) (i32.const 5372)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1) (i32.const 5376)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f306p-4) (i32.const 5380)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f306p-4) (i32.const 5384)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f306p-4) (i32.const 5388)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f306p-4) (i32.const 5392)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-129) (i32.const 5396)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-129) (i32.const 5400)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-129) (i32.const 5404)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-129) (i32.const 5408)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 5412)) + (call $assert_return (call $div (f32.const -0x1p-1) (f32.const inf)) (f32.const -0x0p+0) (i32.const 5416)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 5420)) + (call $assert_return (call $div (f32.const 0x1p-1) (f32.const inf)) (f32.const 0x0p+0) (i32.const 5424)) + (call $assert_return_nan (call $div (f32.const -0x1p-1) (f32.const -nan)) (i32.const 5428)) + (call $assert_return_nan (call $div (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 5432)) + (call $assert_return_nan (call $div (f32.const -0x1p-1) (f32.const nan)) (i32.const 5436)) + (call $assert_return_nan (call $div (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 5440)) + (call $assert_return_nan (call $div (f32.const 0x1p-1) (f32.const -nan)) (i32.const 5444)) + (call $assert_return_nan (call $div (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 5448)) + (call $assert_return_nan (call $div (f32.const 0x1p-1) (f32.const nan)) (i32.const 5452)) + (call $assert_return_nan (call $div (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 5456)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const inf) (i32.const 5460)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 5464)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 5468)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const inf) (i32.const 5472)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const inf) (i32.const 5476)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 5480)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 5484)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const inf) (i32.const 5488)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+126) (i32.const 5492)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+126) (i32.const 5496)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+126) (i32.const 5500)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+126) (i32.const 5504)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p+1) (i32.const 5508)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p+1) (i32.const 5512)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+1) (i32.const 5516)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+1) (i32.const 5520)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 5524)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 5528)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 5532)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 5536)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f306p-3) (i32.const 5540)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f306p-3) (i32.const 5544)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f306p-3) (i32.const 5548)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f306p-3) (i32.const 5552)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-128) (i32.const 5556)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-128) (i32.const 5560)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-128) (i32.const 5564)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-128) (i32.const 5568)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 5572)) + (call $assert_return (call $div (f32.const -0x1p+0) (f32.const inf)) (f32.const -0x0p+0) (i32.const 5576)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 5580)) + (call $assert_return (call $div (f32.const 0x1p+0) (f32.const inf)) (f32.const 0x0p+0) (i32.const 5584)) + (call $assert_return_nan (call $div (f32.const -0x1p+0) (f32.const -nan)) (i32.const 5588)) + (call $assert_return_nan (call $div (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 5592)) + (call $assert_return_nan (call $div (f32.const -0x1p+0) (f32.const nan)) (i32.const 5596)) + (call $assert_return_nan (call $div (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 5600)) + (call $assert_return_nan (call $div (f32.const 0x1p+0) (f32.const -nan)) (i32.const 5604)) + (call $assert_return_nan (call $div (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 5608)) + (call $assert_return_nan (call $div (f32.const 0x1p+0) (f32.const nan)) (i32.const 5612)) + (call $assert_return_nan (call $div (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 5616)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const inf) (i32.const 5620)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 5624)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 5628)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const inf) (i32.const 5632)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const inf) (i32.const 5636)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 5640)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 5644)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const inf) (i32.const 5648)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const inf) (i32.const 5652)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 5656)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 5660)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const inf) (i32.const 5664)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+3) (i32.const 5668)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+3) (i32.const 5672)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+3) (i32.const 5676)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+3) (i32.const 5680)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 5684)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 5688)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 5692)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 5696)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p+0) (i32.const 5700)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p+0) (i32.const 5704)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0) (i32.const 5708)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0) (i32.const 5712)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.921fb8p-126) (i32.const 5716)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.921fb8p-126) (i32.const 5720)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb8p-126) (i32.const 5724)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb8p-126) (i32.const 5728)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 5732)) + (call $assert_return (call $div (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -0x0p+0) (i32.const 5736)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 5740)) + (call $assert_return (call $div (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const 0x0p+0) (i32.const 5744)) + (call $assert_return_nan (call $div (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 5748)) + (call $assert_return_nan (call $div (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 5752)) + (call $assert_return_nan (call $div (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 5756)) + (call $assert_return_nan (call $div (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 5760)) + (call $assert_return_nan (call $div (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 5764)) + (call $assert_return_nan (call $div (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 5768)) + (call $assert_return_nan (call $div (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 5772)) + (call $assert_return_nan (call $div (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 5776)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const inf) (i32.const 5780)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 5784)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 5788)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const inf) (i32.const 5792)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const inf) (i32.const 5796)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 5800)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 5804)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const inf) (i32.const 5808)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const inf) (i32.const 5812)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 5816)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 5820)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const inf) (i32.const 5824)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const inf) (i32.const 5828)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -inf) (i32.const 5832)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 5836)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const inf) (i32.const 5840)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 5844)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 5848)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 5852)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 5856)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f304p+125) (i32.const 5860)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f304p+125) (i32.const 5864)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f304p+125) (i32.const 5868)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f304p+125) (i32.const 5872)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x1p+0) (i32.const 5876)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -0x1p+0) (i32.const 5880)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0) (i32.const 5884)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0) (i32.const 5888)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 5892)) + (call $assert_return (call $div (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -0x0p+0) (i32.const 5896)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 5900)) + (call $assert_return (call $div (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const 0x0p+0) (i32.const 5904)) + (call $assert_return_nan (call $div (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 5908)) + (call $assert_return_nan (call $div (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 5912)) + (call $assert_return_nan (call $div (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 5916)) + (call $assert_return_nan (call $div (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 5920)) + (call $assert_return_nan (call $div (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 5924)) + (call $assert_return_nan (call $div (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 5928)) + (call $assert_return_nan (call $div (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 5932)) + (call $assert_return_nan (call $div (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 5936)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x0p+0)) (f32.const inf) (i32.const 5940)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 5944)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 5948)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x0p+0)) (f32.const inf) (i32.const 5952)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x1p-149)) (f32.const inf) (i32.const 5956)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 5960)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 5964)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 5968)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x1p-126)) (f32.const inf) (i32.const 5972)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 5976)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 5980)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 5984)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x1p-1)) (f32.const inf) (i32.const 5988)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf) (i32.const 5992)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 5996)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 6000)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x1p+0)) (f32.const inf) (i32.const 6004)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf) (i32.const 6008)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 6012)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 6016)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const inf) (i32.const 6020)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf) (i32.const 6024)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 6028)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 6032)) + (call $assert_return (call $div (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 6036)) + (call $assert_return (call $div (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 6040)) + (call $assert_return (call $div (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 6044)) + (call $assert_return (call $div (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 6048)) + (call $assert_return_nan (call $div (f32.const -inf) (f32.const -inf)) (i32.const 6052)) + (call $assert_return_nan (call $div (f32.const -inf) (f32.const inf)) (i32.const 6056)) + (call $assert_return_nan (call $div (f32.const inf) (f32.const -inf)) (i32.const 6060)) + (call $assert_return_nan (call $div (f32.const inf) (f32.const inf)) (i32.const 6064)) + (call $assert_return_nan (call $div (f32.const -inf) (f32.const -nan)) (i32.const 6068)) + (call $assert_return_nan (call $div (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 6072)) + (call $assert_return_nan (call $div (f32.const -inf) (f32.const nan)) (i32.const 6076)) + (call $assert_return_nan (call $div (f32.const -inf) (f32.const nan:0x200000)) (i32.const 6080)) + (call $assert_return_nan (call $div (f32.const inf) (f32.const -nan)) (i32.const 6084)) + (call $assert_return_nan (call $div (f32.const inf) (f32.const -nan:0x200000)) (i32.const 6088)) + (call $assert_return_nan (call $div (f32.const inf) (f32.const nan)) (i32.const 6092)) + (call $assert_return_nan (call $div (f32.const inf) (f32.const nan:0x200000)) (i32.const 6096)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x0p+0)) (i32.const 6100)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 6104)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x0p+0)) (i32.const 6108)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 6112)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x0p+0)) (i32.const 6116)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 6120)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x0p+0)) (i32.const 6124)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 6128)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x1p-149)) (i32.const 6132)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 6136)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x1p-149)) (i32.const 6140)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 6144)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x1p-149)) (i32.const 6148)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 6152)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x1p-149)) (i32.const 6156)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 6160)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x1p-126)) (i32.const 6164)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 6168)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x1p-126)) (i32.const 6172)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 6176)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x1p-126)) (i32.const 6180)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 6184)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x1p-126)) (i32.const 6188)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 6192)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x1p-1)) (i32.const 6196)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 6200)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x1p-1)) (i32.const 6204)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 6208)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x1p-1)) (i32.const 6212)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 6216)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x1p-1)) (i32.const 6220)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 6224)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x1p+0)) (i32.const 6228)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 6232)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x1p+0)) (i32.const 6236)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 6240)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x1p+0)) (i32.const 6244)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 6248)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x1p+0)) (i32.const 6252)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 6256)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 6260)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 6264)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 6268)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 6272)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 6276)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 6280)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 6284)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 6288)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 6292)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 6296)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 6300)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 6304)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 6308)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 6312)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 6316)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 6320)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -inf)) (i32.const 6324)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 6328)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const inf)) (i32.const 6332)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const inf)) (i32.const 6336)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -inf)) (i32.const 6340)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -inf)) (i32.const 6344)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const inf)) (i32.const 6348)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const inf)) (i32.const 6352)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -nan)) (i32.const 6356)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 6360)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 6364)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 6368)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const nan)) (i32.const 6372)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const nan)) (i32.const 6376)) + (call $assert_return_nan (call $div (f32.const -nan) (f32.const nan:0x200000)) (i32.const 6380)) + (call $assert_return_nan (call $div (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 6384)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -nan)) (i32.const 6388)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -nan)) (i32.const 6392)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const -nan:0x200000)) (i32.const 6396)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 6400)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const nan)) (i32.const 6404)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const nan)) (i32.const 6408)) + (call $assert_return_nan (call $div (f32.const nan) (f32.const nan:0x200000)) (i32.const 6412)) + (call $assert_return_nan (call $div (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 6416)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 6420)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 6424)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 6428)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 6432)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 6436)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0) (i32.const 6440)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 6444)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 6448)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6452)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0) (i32.const 6456)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6460)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 6464)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6468)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0) (i32.const 6472)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6476)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 6480)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6484)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0) (i32.const 6488)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6492)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 6496)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6500)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 6504)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6508)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 6512)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6516)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 6520)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6524)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 6528)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const -inf)) (f32.const -inf) (i32.const 6532)) + (call $assert_return (call $min (f32.const -0x0p+0) (f32.const inf)) (f32.const -0x0p+0) (i32.const 6536)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const -inf)) (f32.const -inf) (i32.const 6540)) + (call $assert_return (call $min (f32.const 0x0p+0) (f32.const inf)) (f32.const 0x0p+0) (i32.const 6544)) + (call $assert_return_nan (call $min (f32.const -0x0p+0) (f32.const -nan)) (i32.const 6548)) + (call $assert_return_nan (call $min (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 6552)) + (call $assert_return_nan (call $min (f32.const -0x0p+0) (f32.const nan)) (i32.const 6556)) + (call $assert_return_nan (call $min (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 6560)) + (call $assert_return_nan (call $min (f32.const 0x0p+0) (f32.const -nan)) (i32.const 6564)) + (call $assert_return_nan (call $min (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 6568)) + (call $assert_return_nan (call $min (f32.const 0x0p+0) (f32.const nan)) (i32.const 6572)) + (call $assert_return_nan (call $min (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 6576)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149) (i32.const 6580)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149) (i32.const 6584)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 6588)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 6592)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 6596)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p-149) (i32.const 6600)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 6604)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 6608)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6612)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1p-149) (i32.const 6616)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6620)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149) (i32.const 6624)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6628)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-149) (i32.const 6632)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6636)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149) (i32.const 6640)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6644)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149) (i32.const 6648)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6652)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149) (i32.const 6656)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6660)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-149) (i32.const 6664)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6668)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149) (i32.const 6672)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6676)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-149) (i32.const 6680)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6684)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149) (i32.const 6688)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const -inf)) (f32.const -inf) (i32.const 6692)) + (call $assert_return (call $min (f32.const -0x1p-149) (f32.const inf)) (f32.const -0x1p-149) (i32.const 6696)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const -inf)) (f32.const -inf) (i32.const 6700)) + (call $assert_return (call $min (f32.const 0x1p-149) (f32.const inf)) (f32.const 0x1p-149) (i32.const 6704)) + (call $assert_return_nan (call $min (f32.const -0x1p-149) (f32.const -nan)) (i32.const 6708)) + (call $assert_return_nan (call $min (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 6712)) + (call $assert_return_nan (call $min (f32.const -0x1p-149) (f32.const nan)) (i32.const 6716)) + (call $assert_return_nan (call $min (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 6720)) + (call $assert_return_nan (call $min (f32.const 0x1p-149) (f32.const -nan)) (i32.const 6724)) + (call $assert_return_nan (call $min (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 6728)) + (call $assert_return_nan (call $min (f32.const 0x1p-149) (f32.const nan)) (i32.const 6732)) + (call $assert_return_nan (call $min (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 6736)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126) (i32.const 6740)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126) (i32.const 6744)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 6748)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 6752)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126) (i32.const 6756)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1p-126) (i32.const 6760)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 6764)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 6768)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6772)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p-126) (i32.const 6776)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6780)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 6784)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6788)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-126) (i32.const 6792)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6796)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126) (i32.const 6800)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6804)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126) (i32.const 6808)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6812)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126) (i32.const 6816)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6820)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-126) (i32.const 6824)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6828)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126) (i32.const 6832)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6836)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-126) (i32.const 6840)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6844)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126) (i32.const 6848)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const -inf)) (f32.const -inf) (i32.const 6852)) + (call $assert_return (call $min (f32.const -0x1p-126) (f32.const inf)) (f32.const -0x1p-126) (i32.const 6856)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const -inf)) (f32.const -inf) (i32.const 6860)) + (call $assert_return (call $min (f32.const 0x1p-126) (f32.const inf)) (f32.const 0x1p-126) (i32.const 6864)) + (call $assert_return_nan (call $min (f32.const -0x1p-126) (f32.const -nan)) (i32.const 6868)) + (call $assert_return_nan (call $min (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 6872)) + (call $assert_return_nan (call $min (f32.const -0x1p-126) (f32.const nan)) (i32.const 6876)) + (call $assert_return_nan (call $min (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 6880)) + (call $assert_return_nan (call $min (f32.const 0x1p-126) (f32.const -nan)) (i32.const 6884)) + (call $assert_return_nan (call $min (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 6888)) + (call $assert_return_nan (call $min (f32.const 0x1p-126) (f32.const nan)) (i32.const 6892)) + (call $assert_return_nan (call $min (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 6896)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1) (i32.const 6900)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1) (i32.const 6904)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 6908)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 6912)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1) (i32.const 6916)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1) (i32.const 6920)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 6924)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 6928)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1) (i32.const 6932)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1) (i32.const 6936)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 6940)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 6944)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6948)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 6952)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 6956)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 6960)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6964)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1) (i32.const 6968)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 6972)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1) (i32.const 6976)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6980)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-1) (i32.const 6984)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 6988)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1) (i32.const 6992)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 6996)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-1) (i32.const 7000)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7004)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1) (i32.const 7008)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const -inf)) (f32.const -inf) (i32.const 7012)) + (call $assert_return (call $min (f32.const -0x1p-1) (f32.const inf)) (f32.const -0x1p-1) (i32.const 7016)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const -inf)) (f32.const -inf) (i32.const 7020)) + (call $assert_return (call $min (f32.const 0x1p-1) (f32.const inf)) (f32.const 0x1p-1) (i32.const 7024)) + (call $assert_return_nan (call $min (f32.const -0x1p-1) (f32.const -nan)) (i32.const 7028)) + (call $assert_return_nan (call $min (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 7032)) + (call $assert_return_nan (call $min (f32.const -0x1p-1) (f32.const nan)) (i32.const 7036)) + (call $assert_return_nan (call $min (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 7040)) + (call $assert_return_nan (call $min (f32.const 0x1p-1) (f32.const -nan)) (i32.const 7044)) + (call $assert_return_nan (call $min (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 7048)) + (call $assert_return_nan (call $min (f32.const 0x1p-1) (f32.const nan)) (i32.const 7052)) + (call $assert_return_nan (call $min (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 7056)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0) (i32.const 7060)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0) (i32.const 7064)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 7068)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 7072)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 7076)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0) (i32.const 7080)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 7084)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 7088)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 7092)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0) (i32.const 7096)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 7100)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 7104)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0) (i32.const 7108)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p+0) (i32.const 7112)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 7116)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 7120)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 7124)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 7128)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 7132)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 7136)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7140)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p+0) (i32.const 7144)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7148)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0) (i32.const 7152)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7156)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1p+0) (i32.const 7160)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7164)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0) (i32.const 7168)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const -inf)) (f32.const -inf) (i32.const 7172)) + (call $assert_return (call $min (f32.const -0x1p+0) (f32.const inf)) (f32.const -0x1p+0) (i32.const 7176)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const -inf)) (f32.const -inf) (i32.const 7180)) + (call $assert_return (call $min (f32.const 0x1p+0) (f32.const inf)) (f32.const 0x1p+0) (i32.const 7184)) + (call $assert_return_nan (call $min (f32.const -0x1p+0) (f32.const -nan)) (i32.const 7188)) + (call $assert_return_nan (call $min (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 7192)) + (call $assert_return_nan (call $min (f32.const -0x1p+0) (f32.const nan)) (i32.const 7196)) + (call $assert_return_nan (call $min (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 7200)) + (call $assert_return_nan (call $min (f32.const 0x1p+0) (f32.const -nan)) (i32.const 7204)) + (call $assert_return_nan (call $min (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 7208)) + (call $assert_return_nan (call $min (f32.const 0x1p+0) (f32.const nan)) (i32.const 7212)) + (call $assert_return_nan (call $min (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 7216)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 7220)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 7224)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 7228)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 7232)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 7236)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 7240)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 7244)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 7248)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 7252)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 7256)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 7260)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 7264)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2) (i32.const 7268)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+2) (i32.const 7272)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 7276)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 7280)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 7284)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 7288)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 7292)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 7296)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7300)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7304)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7308)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 7312)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7316)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.921fb6p+2) (i32.const 7320)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7324)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2) (i32.const 7328)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf) (i32.const 7332)) + (call $assert_return (call $min (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -0x1.921fb6p+2) (i32.const 7336)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf) (i32.const 7340)) + (call $assert_return (call $min (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const 0x1.921fb6p+2) (i32.const 7344)) + (call $assert_return_nan (call $min (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 7348)) + (call $assert_return_nan (call $min (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 7352)) + (call $assert_return_nan (call $min (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 7356)) + (call $assert_return_nan (call $min (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 7360)) + (call $assert_return_nan (call $min (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 7364)) + (call $assert_return_nan (call $min (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 7368)) + (call $assert_return_nan (call $min (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 7372)) + (call $assert_return_nan (call $min (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 7376)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 7380)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 7384)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 7388)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 7392)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 7396)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 7400)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 7404)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 7408)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 7412)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 7416)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 7420)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 7424)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 7428)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 7432)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 7436)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 7440)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 7444)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 7448)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 7452)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 7456)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 7460)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 7464)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7468)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 7472)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7476)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7480)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7484)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 7488)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -inf) (i32.const 7492)) + (call $assert_return (call $min (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -0x1.fffffep+127) (i32.const 7496)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -inf) (i32.const 7500)) + (call $assert_return (call $min (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const 0x1.fffffep+127) (i32.const 7504)) + (call $assert_return_nan (call $min (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 7508)) + (call $assert_return_nan (call $min (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 7512)) + (call $assert_return_nan (call $min (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 7516)) + (call $assert_return_nan (call $min (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 7520)) + (call $assert_return_nan (call $min (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 7524)) + (call $assert_return_nan (call $min (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 7528)) + (call $assert_return_nan (call $min (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 7532)) + (call $assert_return_nan (call $min (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 7536)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 7540)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf) (i32.const 7544)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 7548)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 7552)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 7556)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf) (i32.const 7560)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 7564)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 7568)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 7572)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf) (i32.const 7576)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 7580)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 7584)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 7588)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf) (i32.const 7592)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 7596)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 7600)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 7604)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf) (i32.const 7608)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 7612)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 7616)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 7620)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf) (i32.const 7624)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 7628)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 7632)) + (call $assert_return (call $min (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 7636)) + (call $assert_return (call $min (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf) (i32.const 7640)) + (call $assert_return (call $min (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 7644)) + (call $assert_return (call $min (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 7648)) + (call $assert_return (call $min (f32.const -inf) (f32.const -inf)) (f32.const -inf) (i32.const 7652)) + (call $assert_return (call $min (f32.const -inf) (f32.const inf)) (f32.const -inf) (i32.const 7656)) + (call $assert_return (call $min (f32.const inf) (f32.const -inf)) (f32.const -inf) (i32.const 7660)) + (call $assert_return (call $min (f32.const inf) (f32.const inf)) (f32.const inf) (i32.const 7664)) + (call $assert_return_nan (call $min (f32.const -inf) (f32.const -nan)) (i32.const 7668)) + (call $assert_return_nan (call $min (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 7672)) + (call $assert_return_nan (call $min (f32.const -inf) (f32.const nan)) (i32.const 7676)) + (call $assert_return_nan (call $min (f32.const -inf) (f32.const nan:0x200000)) (i32.const 7680)) + (call $assert_return_nan (call $min (f32.const inf) (f32.const -nan)) (i32.const 7684)) + (call $assert_return_nan (call $min (f32.const inf) (f32.const -nan:0x200000)) (i32.const 7688)) + (call $assert_return_nan (call $min (f32.const inf) (f32.const nan)) (i32.const 7692)) + (call $assert_return_nan (call $min (f32.const inf) (f32.const nan:0x200000)) (i32.const 7696)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x0p+0)) (i32.const 7700)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 7704)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x0p+0)) (i32.const 7708)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 7712)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x0p+0)) (i32.const 7716)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 7720)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x0p+0)) (i32.const 7724)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 7728)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x1p-149)) (i32.const 7732)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 7736)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x1p-149)) (i32.const 7740)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 7744)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x1p-149)) (i32.const 7748)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 7752)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x1p-149)) (i32.const 7756)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 7760)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x1p-126)) (i32.const 7764)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 7768)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x1p-126)) (i32.const 7772)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 7776)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x1p-126)) (i32.const 7780)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 7784)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x1p-126)) (i32.const 7788)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 7792)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x1p-1)) (i32.const 7796)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 7800)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x1p-1)) (i32.const 7804)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 7808)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x1p-1)) (i32.const 7812)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 7816)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x1p-1)) (i32.const 7820)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 7824)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x1p+0)) (i32.const 7828)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 7832)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x1p+0)) (i32.const 7836)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 7840)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x1p+0)) (i32.const 7844)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 7848)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x1p+0)) (i32.const 7852)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 7856)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 7860)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 7864)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 7868)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 7872)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 7876)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 7880)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 7884)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 7888)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 7892)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 7896)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 7900)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 7904)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 7908)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 7912)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 7916)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 7920)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -inf)) (i32.const 7924)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 7928)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const inf)) (i32.const 7932)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const inf)) (i32.const 7936)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -inf)) (i32.const 7940)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -inf)) (i32.const 7944)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const inf)) (i32.const 7948)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const inf)) (i32.const 7952)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -nan)) (i32.const 7956)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 7960)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 7964)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 7968)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const nan)) (i32.const 7972)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const nan)) (i32.const 7976)) + (call $assert_return_nan (call $min (f32.const -nan) (f32.const nan:0x200000)) (i32.const 7980)) + (call $assert_return_nan (call $min (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 7984)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -nan)) (i32.const 7988)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -nan)) (i32.const 7992)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const -nan:0x200000)) (i32.const 7996)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 8000)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const nan)) (i32.const 8004)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const nan)) (i32.const 8008)) + (call $assert_return_nan (call $min (f32.const nan) (f32.const nan:0x200000)) (i32.const 8012)) + (call $assert_return_nan (call $min (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 8016)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8020)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8024)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 8028)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8032)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 8036)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8040)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0) (i32.const 8044)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8048)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 8052)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8056)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0) (i32.const 8060)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8064)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 8068)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8072)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0) (i32.const 8076)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8080)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0) (i32.const 8084)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8088)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0) (i32.const 8092)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8096)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 8100)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8104)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 8108)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8112)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 8116)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8120)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 8124)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8128)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 8132)) + (call $assert_return (call $max (f32.const -0x0p+0) (f32.const inf)) (f32.const inf) (i32.const 8136)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const -inf)) (f32.const 0x0p+0) (i32.const 8140)) + (call $assert_return (call $max (f32.const 0x0p+0) (f32.const inf)) (f32.const inf) (i32.const 8144)) + (call $assert_return_nan (call $max (f32.const -0x0p+0) (f32.const -nan)) (i32.const 8148)) + (call $assert_return_nan (call $max (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 8152)) + (call $assert_return_nan (call $max (f32.const -0x0p+0) (f32.const nan)) (i32.const 8156)) + (call $assert_return_nan (call $max (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 8160)) + (call $assert_return_nan (call $max (f32.const 0x0p+0) (f32.const -nan)) (i32.const 8164)) + (call $assert_return_nan (call $max (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 8168)) + (call $assert_return_nan (call $max (f32.const 0x0p+0) (f32.const nan)) (i32.const 8172)) + (call $assert_return_nan (call $max (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 8176)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8180)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8184)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149) (i32.const 8188)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149) (i32.const 8192)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 8196)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8200)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p-149) (i32.const 8204)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8208)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149) (i32.const 8212)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8216)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1p-149) (i32.const 8220)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8224)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149) (i32.const 8228)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8232)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-149) (i32.const 8236)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8240)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149) (i32.const 8244)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8248)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149) (i32.const 8252)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8256)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149) (i32.const 8260)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8264)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-149) (i32.const 8268)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8272)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149) (i32.const 8276)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8280)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-149) (i32.const 8284)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8288)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const -inf)) (f32.const -0x1p-149) (i32.const 8292)) + (call $assert_return (call $max (f32.const -0x1p-149) (f32.const inf)) (f32.const inf) (i32.const 8296)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const -inf)) (f32.const 0x1p-149) (i32.const 8300)) + (call $assert_return (call $max (f32.const 0x1p-149) (f32.const inf)) (f32.const inf) (i32.const 8304)) + (call $assert_return_nan (call $max (f32.const -0x1p-149) (f32.const -nan)) (i32.const 8308)) + (call $assert_return_nan (call $max (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 8312)) + (call $assert_return_nan (call $max (f32.const -0x1p-149) (f32.const nan)) (i32.const 8316)) + (call $assert_return_nan (call $max (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 8320)) + (call $assert_return_nan (call $max (f32.const 0x1p-149) (f32.const -nan)) (i32.const 8324)) + (call $assert_return_nan (call $max (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 8328)) + (call $assert_return_nan (call $max (f32.const 0x1p-149) (f32.const nan)) (i32.const 8332)) + (call $assert_return_nan (call $max (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 8336)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8340)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8344)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126) (i32.const 8348)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126) (i32.const 8352)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 8356)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8360)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1p-126) (i32.const 8364)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126) (i32.const 8368)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 8372)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8376)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p-126) (i32.const 8380)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8384)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126) (i32.const 8388)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8392)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-126) (i32.const 8396)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8400)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126) (i32.const 8404)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8408)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126) (i32.const 8412)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8416)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126) (i32.const 8420)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8424)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-126) (i32.const 8428)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8432)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126) (i32.const 8436)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8440)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-126) (i32.const 8444)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8448)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const -inf)) (f32.const -0x1p-126) (i32.const 8452)) + (call $assert_return (call $max (f32.const -0x1p-126) (f32.const inf)) (f32.const inf) (i32.const 8456)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const -inf)) (f32.const 0x1p-126) (i32.const 8460)) + (call $assert_return (call $max (f32.const 0x1p-126) (f32.const inf)) (f32.const inf) (i32.const 8464)) + (call $assert_return_nan (call $max (f32.const -0x1p-126) (f32.const -nan)) (i32.const 8468)) + (call $assert_return_nan (call $max (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 8472)) + (call $assert_return_nan (call $max (f32.const -0x1p-126) (f32.const nan)) (i32.const 8476)) + (call $assert_return_nan (call $max (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 8480)) + (call $assert_return_nan (call $max (f32.const 0x1p-126) (f32.const -nan)) (i32.const 8484)) + (call $assert_return_nan (call $max (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 8488)) + (call $assert_return_nan (call $max (f32.const 0x1p-126) (f32.const nan)) (i32.const 8492)) + (call $assert_return_nan (call $max (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 8496)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8500)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8504)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1) (i32.const 8508)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1) (i32.const 8512)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 8516)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8520)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1) (i32.const 8524)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1) (i32.const 8528)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 8532)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8536)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1) (i32.const 8540)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1) (i32.const 8544)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 8548)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8552)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 8556)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8560)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1) (i32.const 8564)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8568)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1) (i32.const 8572)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8576)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1) (i32.const 8580)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8584)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-1) (i32.const 8588)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8592)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1) (i32.const 8596)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8600)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-1) (i32.const 8604)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8608)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const -inf)) (f32.const -0x1p-1) (i32.const 8612)) + (call $assert_return (call $max (f32.const -0x1p-1) (f32.const inf)) (f32.const inf) (i32.const 8616)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const -inf)) (f32.const 0x1p-1) (i32.const 8620)) + (call $assert_return (call $max (f32.const 0x1p-1) (f32.const inf)) (f32.const inf) (i32.const 8624)) + (call $assert_return_nan (call $max (f32.const -0x1p-1) (f32.const -nan)) (i32.const 8628)) + (call $assert_return_nan (call $max (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 8632)) + (call $assert_return_nan (call $max (f32.const -0x1p-1) (f32.const nan)) (i32.const 8636)) + (call $assert_return_nan (call $max (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 8640)) + (call $assert_return_nan (call $max (f32.const 0x1p-1) (f32.const -nan)) (i32.const 8644)) + (call $assert_return_nan (call $max (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 8648)) + (call $assert_return_nan (call $max (f32.const 0x1p-1) (f32.const nan)) (i32.const 8652)) + (call $assert_return_nan (call $max (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 8656)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8660)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8664)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0) (i32.const 8668)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0) (i32.const 8672)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 8676)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8680)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0) (i32.const 8684)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 8688)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 8692)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8696)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0) (i32.const 8700)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 8704)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 8708)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8712)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p+0) (i32.const 8716)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0) (i32.const 8720)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 8724)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8728)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 8732)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8736)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0) (i32.const 8740)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8744)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p+0) (i32.const 8748)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8752)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0) (i32.const 8756)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8760)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1p+0) (i32.const 8764)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8768)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const -inf)) (f32.const -0x1p+0) (i32.const 8772)) + (call $assert_return (call $max (f32.const -0x1p+0) (f32.const inf)) (f32.const inf) (i32.const 8776)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const -inf)) (f32.const 0x1p+0) (i32.const 8780)) + (call $assert_return (call $max (f32.const 0x1p+0) (f32.const inf)) (f32.const inf) (i32.const 8784)) + (call $assert_return_nan (call $max (f32.const -0x1p+0) (f32.const -nan)) (i32.const 8788)) + (call $assert_return_nan (call $max (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 8792)) + (call $assert_return_nan (call $max (f32.const -0x1p+0) (f32.const nan)) (i32.const 8796)) + (call $assert_return_nan (call $max (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 8800)) + (call $assert_return_nan (call $max (f32.const 0x1p+0) (f32.const -nan)) (i32.const 8804)) + (call $assert_return_nan (call $max (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 8808)) + (call $assert_return_nan (call $max (f32.const 0x1p+0) (f32.const nan)) (i32.const 8812)) + (call $assert_return_nan (call $max (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 8816)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8820)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8824)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 8828)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 8832)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 8836)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 8840)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 8844)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 8848)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 8852)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 8856)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 8860)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 8864)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 8868)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 8872)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+2) (i32.const 8876)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2) (i32.const 8880)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 8884)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 8888)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 8892)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 8896)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 8900)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8904)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8908)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 8912)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2) (i32.const 8916)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8920)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.921fb6p+2) (i32.const 8924)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 8928)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x1.921fb6p+2) (i32.const 8932)) + (call $assert_return (call $max (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const inf) (i32.const 8936)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const 0x1.921fb6p+2) (i32.const 8940)) + (call $assert_return (call $max (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const inf) (i32.const 8944)) + (call $assert_return_nan (call $max (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 8948)) + (call $assert_return_nan (call $max (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 8952)) + (call $assert_return_nan (call $max (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 8956)) + (call $assert_return_nan (call $max (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 8960)) + (call $assert_return_nan (call $max (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 8964)) + (call $assert_return_nan (call $max (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 8968)) + (call $assert_return_nan (call $max (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 8972)) + (call $assert_return_nan (call $max (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 8976)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 8980)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 8984)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 8988)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 8992)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 8996)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 9000)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 9004)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 9008)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 9012)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 9016)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 9020)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 9024)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 9028)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 9032)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 9036)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 9040)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 9044)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9048)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 9052)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 9056)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 9060)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 9064)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 9068)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 9072)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 9076)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9080)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9084)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9088)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -0x1.fffffep+127) (i32.const 9092)) + (call $assert_return (call $max (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const inf) (i32.const 9096)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const 0x1.fffffep+127) (i32.const 9100)) + (call $assert_return (call $max (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const inf) (i32.const 9104)) + (call $assert_return_nan (call $max (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 9108)) + (call $assert_return_nan (call $max (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 9112)) + (call $assert_return_nan (call $max (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 9116)) + (call $assert_return_nan (call $max (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 9120)) + (call $assert_return_nan (call $max (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 9124)) + (call $assert_return_nan (call $max (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 9128)) + (call $assert_return_nan (call $max (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 9132)) + (call $assert_return_nan (call $max (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 9136)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 9140)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 9144)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x0p+0)) (f32.const inf) (i32.const 9148)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x0p+0)) (f32.const inf) (i32.const 9152)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 9156)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 9160)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x1p-149)) (f32.const inf) (i32.const 9164)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 9168)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 9172)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 9176)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x1p-126)) (f32.const inf) (i32.const 9180)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 9184)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 9188)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 9192)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x1p-1)) (f32.const inf) (i32.const 9196)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 9200)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 9204)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9208)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x1p+0)) (f32.const inf) (i32.const 9212)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 9216)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 9220)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 9224)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const inf) (i32.const 9228)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 9232)) + (call $assert_return (call $max (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 9236)) + (call $assert_return (call $max (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9240)) + (call $assert_return (call $max (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const inf) (i32.const 9244)) + (call $assert_return (call $max (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 9248)) + (call $assert_return (call $max (f32.const -inf) (f32.const -inf)) (f32.const -inf) (i32.const 9252)) + (call $assert_return (call $max (f32.const -inf) (f32.const inf)) (f32.const inf) (i32.const 9256)) + (call $assert_return (call $max (f32.const inf) (f32.const -inf)) (f32.const inf) (i32.const 9260)) + (call $assert_return (call $max (f32.const inf) (f32.const inf)) (f32.const inf) (i32.const 9264)) + (call $assert_return_nan (call $max (f32.const -inf) (f32.const -nan)) (i32.const 9268)) + (call $assert_return_nan (call $max (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 9272)) + (call $assert_return_nan (call $max (f32.const -inf) (f32.const nan)) (i32.const 9276)) + (call $assert_return_nan (call $max (f32.const -inf) (f32.const nan:0x200000)) (i32.const 9280)) + (call $assert_return_nan (call $max (f32.const inf) (f32.const -nan)) (i32.const 9284)) + (call $assert_return_nan (call $max (f32.const inf) (f32.const -nan:0x200000)) (i32.const 9288)) + (call $assert_return_nan (call $max (f32.const inf) (f32.const nan)) (i32.const 9292)) + (call $assert_return_nan (call $max (f32.const inf) (f32.const nan:0x200000)) (i32.const 9296)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x0p+0)) (i32.const 9300)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 9304)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x0p+0)) (i32.const 9308)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 9312)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x0p+0)) (i32.const 9316)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 9320)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x0p+0)) (i32.const 9324)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 9328)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x1p-149)) (i32.const 9332)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 9336)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x1p-149)) (i32.const 9340)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 9344)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x1p-149)) (i32.const 9348)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 9352)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x1p-149)) (i32.const 9356)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 9360)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x1p-126)) (i32.const 9364)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 9368)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x1p-126)) (i32.const 9372)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 9376)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x1p-126)) (i32.const 9380)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 9384)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x1p-126)) (i32.const 9388)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 9392)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x1p-1)) (i32.const 9396)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 9400)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x1p-1)) (i32.const 9404)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 9408)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x1p-1)) (i32.const 9412)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 9416)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x1p-1)) (i32.const 9420)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 9424)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x1p+0)) (i32.const 9428)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 9432)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x1p+0)) (i32.const 9436)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 9440)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x1p+0)) (i32.const 9444)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 9448)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x1p+0)) (i32.const 9452)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 9456)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 9460)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 9464)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 9468)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 9472)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 9476)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 9480)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 9484)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 9488)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 9492)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 9496)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 9500)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 9504)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 9508)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 9512)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 9516)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 9520)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -inf)) (i32.const 9524)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 9528)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const inf)) (i32.const 9532)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const inf)) (i32.const 9536)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -inf)) (i32.const 9540)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -inf)) (i32.const 9544)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const inf)) (i32.const 9548)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const inf)) (i32.const 9552)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -nan)) (i32.const 9556)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 9560)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 9564)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 9568)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const nan)) (i32.const 9572)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const nan)) (i32.const 9576)) + (call $assert_return_nan (call $max (f32.const -nan) (f32.const nan:0x200000)) (i32.const 9580)) + (call $assert_return_nan (call $max (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 9584)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -nan)) (i32.const 9588)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -nan)) (i32.const 9592)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const -nan:0x200000)) (i32.const 9596)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 9600)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const nan)) (i32.const 9604)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const nan)) (i32.const 9608)) + (call $assert_return_nan (call $max (f32.const nan) (f32.const nan:0x200000)) (i32.const 9612)) + (call $assert_return_nan (call $max (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 9616)) + (call $assert_return (call $sqrt (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 9620)) + (call $assert_return (call $sqrt (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 9624)) + (call $assert_return_nan (call $sqrt (f32.const -0x1p-149)) (i32.const 9628)) + (call $assert_return (call $sqrt (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75) (i32.const 9632)) + (call $assert_return_nan (call $sqrt (f32.const -0x1p-126)) (i32.const 9636)) + (call $assert_return (call $sqrt (f32.const 0x1p-126)) (f32.const 0x1p-63) (i32.const 9640)) + (call $assert_return_nan (call $sqrt (f32.const -0x1p-1)) (i32.const 9644)) + (call $assert_return (call $sqrt (f32.const 0x1p-1)) (f32.const 0x1.6a09e6p-1) (i32.const 9648)) + (call $assert_return_nan (call $sqrt (f32.const -0x1p+0)) (i32.const 9652)) + (call $assert_return (call $sqrt (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9656)) + (call $assert_return_nan (call $sqrt (f32.const -0x1.921fb6p+2)) (i32.const 9660)) + (call $assert_return (call $sqrt (f32.const 0x1.921fb6p+2)) (f32.const 0x1.40d932p+1) (i32.const 9664)) + (call $assert_return_nan (call $sqrt (f32.const -0x1.fffffep+127)) (i32.const 9668)) + (call $assert_return (call $sqrt (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+63) (i32.const 9672)) + (call $assert_return_nan (call $sqrt (f32.const -inf)) (i32.const 9676)) + (call $assert_return (call $sqrt (f32.const inf)) (f32.const inf) (i32.const 9680)) + (call $assert_return_nan (call $sqrt (f32.const -nan)) (i32.const 9684)) + (call $assert_return_nan (call $sqrt (f32.const -nan:0x200000)) (i32.const 9688)) + (call $assert_return_nan (call $sqrt (f32.const nan)) (i32.const 9692)) + (call $assert_return_nan (call $sqrt (f32.const nan:0x200000)) (i32.const 9696)) + (call $assert_return (call $floor (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 9700)) + (call $assert_return (call $floor (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 9704)) + (call $assert_return (call $floor (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 9708)) + (call $assert_return (call $floor (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 9712)) + (call $assert_return (call $floor (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 9716)) + (call $assert_return (call $floor (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 9720)) + (call $assert_return (call $floor (f32.const -0x1p-1)) (f32.const -0x1p+0) (i32.const 9724)) + (call $assert_return (call $floor (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 9728)) + (call $assert_return (call $floor (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 9732)) + (call $assert_return (call $floor (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9736)) + (call $assert_return (call $floor (f32.const -0x1.921fb6p+2)) (f32.const -0x1.cp+2) (i32.const 9740)) + (call $assert_return (call $floor (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2) (i32.const 9744)) + (call $assert_return (call $floor (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 9748)) + (call $assert_return (call $floor (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9752)) + (call $assert_return (call $floor (f32.const -inf)) (f32.const -inf) (i32.const 9756)) + (call $assert_return (call $floor (f32.const inf)) (f32.const inf) (i32.const 9760)) + (call $assert_return_nan (call $floor (f32.const -nan)) (i32.const 9764)) + (call $assert_return_nan (call $floor (f32.const -nan:0x200000)) (i32.const 9768)) + (call $assert_return_nan (call $floor (f32.const nan)) (i32.const 9772)) + (call $assert_return_nan (call $floor (f32.const nan:0x200000)) (i32.const 9776)) + (call $assert_return (call $ceil (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 9780)) + (call $assert_return (call $ceil (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 9784)) + (call $assert_return (call $ceil (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 9788)) + (call $assert_return (call $ceil (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 9792)) + (call $assert_return (call $ceil (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 9796)) + (call $assert_return (call $ceil (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 9800)) + (call $assert_return (call $ceil (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 9804)) + (call $assert_return (call $ceil (f32.const 0x1p-1)) (f32.const 0x1p+0) (i32.const 9808)) + (call $assert_return (call $ceil (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 9812)) + (call $assert_return (call $ceil (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9816)) + (call $assert_return (call $ceil (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2) (i32.const 9820)) + (call $assert_return (call $ceil (f32.const 0x1.921fb6p+2)) (f32.const 0x1.cp+2) (i32.const 9824)) + (call $assert_return (call $ceil (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 9828)) + (call $assert_return (call $ceil (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9832)) + (call $assert_return (call $ceil (f32.const -inf)) (f32.const -inf) (i32.const 9836)) + (call $assert_return (call $ceil (f32.const inf)) (f32.const inf) (i32.const 9840)) + (call $assert_return_nan (call $ceil (f32.const -nan)) (i32.const 9844)) + (call $assert_return_nan (call $ceil (f32.const -nan:0x200000)) (i32.const 9848)) + (call $assert_return_nan (call $ceil (f32.const nan)) (i32.const 9852)) + (call $assert_return_nan (call $ceil (f32.const nan:0x200000)) (i32.const 9856)) + (call $assert_return (call $trunc (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 9860)) + (call $assert_return (call $trunc (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 9864)) + (call $assert_return (call $trunc (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 9868)) + (call $assert_return (call $trunc (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 9872)) + (call $assert_return (call $trunc (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 9876)) + (call $assert_return (call $trunc (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 9880)) + (call $assert_return (call $trunc (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 9884)) + (call $assert_return (call $trunc (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 9888)) + (call $assert_return (call $trunc (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 9892)) + (call $assert_return (call $trunc (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9896)) + (call $assert_return (call $trunc (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2) (i32.const 9900)) + (call $assert_return (call $trunc (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2) (i32.const 9904)) + (call $assert_return (call $trunc (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 9908)) + (call $assert_return (call $trunc (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9912)) + (call $assert_return (call $trunc (f32.const -inf)) (f32.const -inf) (i32.const 9916)) + (call $assert_return (call $trunc (f32.const inf)) (f32.const inf) (i32.const 9920)) + (call $assert_return_nan (call $trunc (f32.const -nan)) (i32.const 9924)) + (call $assert_return_nan (call $trunc (f32.const -nan:0x200000)) (i32.const 9928)) + (call $assert_return_nan (call $trunc (f32.const nan)) (i32.const 9932)) + (call $assert_return_nan (call $trunc (f32.const nan:0x200000)) (i32.const 9936)) + (call $assert_return (call $nearest (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 9940)) + (call $assert_return (call $nearest (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 9944)) + (call $assert_return (call $nearest (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 9948)) + (call $assert_return (call $nearest (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 9952)) + (call $assert_return (call $nearest (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 9956)) + (call $assert_return (call $nearest (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 9960)) + (call $assert_return (call $nearest (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 9964)) + (call $assert_return (call $nearest (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 9968)) + (call $assert_return (call $nearest (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 9972)) + (call $assert_return (call $nearest (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 9976)) + (call $assert_return (call $nearest (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2) (i32.const 9980)) + (call $assert_return (call $nearest (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2) (i32.const 9984)) + (call $assert_return (call $nearest (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 9988)) + (call $assert_return (call $nearest (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 9992)) + (call $assert_return (call $nearest (f32.const -inf)) (f32.const -inf) (i32.const 9996)) + (call $assert_return (call $nearest (f32.const inf)) (f32.const inf) (i32.const 10000)) + (call $assert_return_nan (call $nearest (f32.const -nan)) (i32.const 10004)) + (call $assert_return_nan (call $nearest (f32.const -nan:0x200000)) (i32.const 10008)) + (call $assert_return_nan (call $nearest (f32.const nan)) (i32.const 10012)) + (call $assert_return_nan (call $nearest (f32.const nan:0x200000)) (i32.const 10016)) +)) +)====="; +static const char f32_cmp_test_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (data (i32.const 292) "69") + (data (i32.const 296) "70") + (data (i32.const 300) "71") + (data (i32.const 304) "72") + (data (i32.const 308) "73") + (data (i32.const 312) "74") + (data (i32.const 316) "75") + (data (i32.const 320) "76") + (data (i32.const 324) "77") + (data (i32.const 328) "78") + (data (i32.const 332) "79") + (data (i32.const 336) "80") + (data (i32.const 340) "81") + (data (i32.const 344) "82") + (data (i32.const 348) "83") + (data (i32.const 352) "84") + (data (i32.const 356) "85") + (data (i32.const 360) "86") + (data (i32.const 364) "87") + (data (i32.const 368) "88") + (data (i32.const 372) "89") + (data (i32.const 376) "90") + (data (i32.const 380) "91") + (data (i32.const 384) "92") + (data (i32.const 388) "93") + (data (i32.const 392) "94") + (data (i32.const 396) "95") + (data (i32.const 400) "96") + (data (i32.const 404) "97") + (data (i32.const 408) "98") + (data (i32.const 412) "99") + (data (i32.const 416) "100") + (data (i32.const 420) "101") + (data (i32.const 424) "102") + (data (i32.const 428) "103") + (data (i32.const 432) "104") + (data (i32.const 436) "105") + (data (i32.const 440) "106") + (data (i32.const 444) "107") + (data (i32.const 448) "108") + (data (i32.const 452) "109") + (data (i32.const 456) "110") + (data (i32.const 460) "111") + (data (i32.const 464) "112") + (data (i32.const 468) "113") + (data (i32.const 472) "114") + (data (i32.const 476) "115") + (data (i32.const 480) "116") + (data (i32.const 484) "117") + (data (i32.const 488) "118") + (data (i32.const 492) "119") + (data (i32.const 496) "120") + (data (i32.const 500) "121") + (data (i32.const 504) "122") + (data (i32.const 508) "123") + (data (i32.const 512) "124") + (data (i32.const 516) "125") + (data (i32.const 520) "126") + (data (i32.const 524) "127") + (data (i32.const 528) "128") + (data (i32.const 532) "129") + (data (i32.const 536) "130") + (data (i32.const 540) "131") + (data (i32.const 544) "132") + (data (i32.const 548) "133") + (data (i32.const 552) "134") + (data (i32.const 556) "135") + (data (i32.const 560) "136") + (data (i32.const 564) "137") + (data (i32.const 568) "138") + (data (i32.const 572) "139") + (data (i32.const 576) "140") + (data (i32.const 580) "141") + (data (i32.const 584) "142") + (data (i32.const 588) "143") + (data (i32.const 592) "144") + (data (i32.const 596) "145") + (data (i32.const 600) "146") + (data (i32.const 604) "147") + (data (i32.const 608) "148") + (data (i32.const 612) "149") + (data (i32.const 616) "150") + (data (i32.const 620) "151") + (data (i32.const 624) "152") + (data (i32.const 628) "153") + (data (i32.const 632) "154") + (data (i32.const 636) "155") + (data (i32.const 640) "156") + (data (i32.const 644) "157") + (data (i32.const 648) "158") + (data (i32.const 652) "159") + (data (i32.const 656) "160") + (data (i32.const 660) "161") + (data (i32.const 664) "162") + (data (i32.const 668) "163") + (data (i32.const 672) "164") + (data (i32.const 676) "165") + (data (i32.const 680) "166") + (data (i32.const 684) "167") + (data (i32.const 688) "168") + (data (i32.const 692) "169") + (data (i32.const 696) "170") + (data (i32.const 700) "171") + (data (i32.const 704) "172") + (data (i32.const 708) "173") + (data (i32.const 712) "174") + (data (i32.const 716) "175") + (data (i32.const 720) "176") + (data (i32.const 724) "177") + (data (i32.const 728) "178") + (data (i32.const 732) "179") + (data (i32.const 736) "180") + (data (i32.const 740) "181") + (data (i32.const 744) "182") + (data (i32.const 748) "183") + (data (i32.const 752) "184") + (data (i32.const 756) "185") + (data (i32.const 760) "186") + (data (i32.const 764) "187") + (data (i32.const 768) "188") + (data (i32.const 772) "189") + (data (i32.const 776) "190") + (data (i32.const 780) "191") + (data (i32.const 784) "192") + (data (i32.const 788) "193") + (data (i32.const 792) "194") + (data (i32.const 796) "195") + (data (i32.const 800) "196") + (data (i32.const 804) "197") + (data (i32.const 808) "198") + (data (i32.const 812) "199") + (data (i32.const 816) "200") + (data (i32.const 820) "201") + (data (i32.const 824) "202") + (data (i32.const 828) "203") + (data (i32.const 832) "204") + (data (i32.const 836) "205") + (data (i32.const 840) "206") + (data (i32.const 844) "207") + (data (i32.const 848) "208") + (data (i32.const 852) "209") + (data (i32.const 856) "210") + (data (i32.const 860) "211") + (data (i32.const 864) "212") + (data (i32.const 868) "213") + (data (i32.const 872) "214") + (data (i32.const 876) "215") + (data (i32.const 880) "216") + (data (i32.const 884) "217") + (data (i32.const 888) "218") + (data (i32.const 892) "219") + (data (i32.const 896) "220") + (data (i32.const 900) "221") + (data (i32.const 904) "222") + (data (i32.const 908) "223") + (data (i32.const 912) "224") + (data (i32.const 916) "225") + (data (i32.const 920) "226") + (data (i32.const 924) "227") + (data (i32.const 928) "228") + (data (i32.const 932) "229") + (data (i32.const 936) "230") + (data (i32.const 940) "231") + (data (i32.const 944) "232") + (data (i32.const 948) "233") + (data (i32.const 952) "234") + (data (i32.const 956) "235") + (data (i32.const 960) "236") + (data (i32.const 964) "237") + (data (i32.const 968) "238") + (data (i32.const 972) "239") + (data (i32.const 976) "240") + (data (i32.const 980) "241") + (data (i32.const 984) "242") + (data (i32.const 988) "243") + (data (i32.const 992) "244") + (data (i32.const 996) "245") + (data (i32.const 1000) "246") + (data (i32.const 1004) "247") + (data (i32.const 1008) "248") + (data (i32.const 1012) "249") + (data (i32.const 1016) "250") + (data (i32.const 1020) "251") + (data (i32.const 1024) "252") + (data (i32.const 1028) "253") + (data (i32.const 1032) "254") + (data (i32.const 1036) "255") + (data (i32.const 1040) "256") + (data (i32.const 1044) "257") + (data (i32.const 1048) "258") + (data (i32.const 1052) "259") + (data (i32.const 1056) "260") + (data (i32.const 1060) "261") + (data (i32.const 1064) "262") + (data (i32.const 1068) "263") + (data (i32.const 1072) "264") + (data (i32.const 1076) "265") + (data (i32.const 1080) "266") + (data (i32.const 1084) "267") + (data (i32.const 1088) "268") + (data (i32.const 1092) "269") + (data (i32.const 1096) "270") + (data (i32.const 1100) "271") + (data (i32.const 1104) "272") + (data (i32.const 1108) "273") + (data (i32.const 1112) "274") + (data (i32.const 1116) "275") + (data (i32.const 1120) "276") + (data (i32.const 1124) "277") + (data (i32.const 1128) "278") + (data (i32.const 1132) "279") + (data (i32.const 1136) "280") + (data (i32.const 1140) "281") + (data (i32.const 1144) "282") + (data (i32.const 1148) "283") + (data (i32.const 1152) "284") + (data (i32.const 1156) "285") + (data (i32.const 1160) "286") + (data (i32.const 1164) "287") + (data (i32.const 1168) "288") + (data (i32.const 1172) "289") + (data (i32.const 1176) "290") + (data (i32.const 1180) "291") + (data (i32.const 1184) "292") + (data (i32.const 1188) "293") + (data (i32.const 1192) "294") + (data (i32.const 1196) "295") + (data (i32.const 1200) "296") + (data (i32.const 1204) "297") + (data (i32.const 1208) "298") + (data (i32.const 1212) "299") + (data (i32.const 1216) "300") + (data (i32.const 1220) "301") + (data (i32.const 1224) "302") + (data (i32.const 1228) "303") + (data (i32.const 1232) "304") + (data (i32.const 1236) "305") + (data (i32.const 1240) "306") + (data (i32.const 1244) "307") + (data (i32.const 1248) "308") + (data (i32.const 1252) "309") + (data (i32.const 1256) "310") + (data (i32.const 1260) "311") + (data (i32.const 1264) "312") + (data (i32.const 1268) "313") + (data (i32.const 1272) "314") + (data (i32.const 1276) "315") + (data (i32.const 1280) "316") + (data (i32.const 1284) "317") + (data (i32.const 1288) "318") + (data (i32.const 1292) "319") + (data (i32.const 1296) "320") + (data (i32.const 1300) "321") + (data (i32.const 1304) "322") + (data (i32.const 1308) "323") + (data (i32.const 1312) "324") + (data (i32.const 1316) "325") + (data (i32.const 1320) "326") + (data (i32.const 1324) "327") + (data (i32.const 1328) "328") + (data (i32.const 1332) "329") + (data (i32.const 1336) "330") + (data (i32.const 1340) "331") + (data (i32.const 1344) "332") + (data (i32.const 1348) "333") + (data (i32.const 1352) "334") + (data (i32.const 1356) "335") + (data (i32.const 1360) "336") + (data (i32.const 1364) "337") + (data (i32.const 1368) "338") + (data (i32.const 1372) "339") + (data (i32.const 1376) "340") + (data (i32.const 1380) "341") + (data (i32.const 1384) "342") + (data (i32.const 1388) "343") + (data (i32.const 1392) "344") + (data (i32.const 1396) "345") + (data (i32.const 1400) "346") + (data (i32.const 1404) "347") + (data (i32.const 1408) "348") + (data (i32.const 1412) "349") + (data (i32.const 1416) "350") + (data (i32.const 1420) "351") + (data (i32.const 1424) "352") + (data (i32.const 1428) "353") + (data (i32.const 1432) "354") + (data (i32.const 1436) "355") + (data (i32.const 1440) "356") + (data (i32.const 1444) "357") + (data (i32.const 1448) "358") + (data (i32.const 1452) "359") + (data (i32.const 1456) "360") + (data (i32.const 1460) "361") + (data (i32.const 1464) "362") + (data (i32.const 1468) "363") + (data (i32.const 1472) "364") + (data (i32.const 1476) "365") + (data (i32.const 1480) "366") + (data (i32.const 1484) "367") + (data (i32.const 1488) "368") + (data (i32.const 1492) "369") + (data (i32.const 1496) "370") + (data (i32.const 1500) "371") + (data (i32.const 1504) "372") + (data (i32.const 1508) "373") + (data (i32.const 1512) "374") + (data (i32.const 1516) "375") + (data (i32.const 1520) "376") + (data (i32.const 1524) "377") + (data (i32.const 1528) "378") + (data (i32.const 1532) "379") + (data (i32.const 1536) "380") + (data (i32.const 1540) "381") + (data (i32.const 1544) "382") + (data (i32.const 1548) "383") + (data (i32.const 1552) "384") + (data (i32.const 1556) "385") + (data (i32.const 1560) "386") + (data (i32.const 1564) "387") + (data (i32.const 1568) "388") + (data (i32.const 1572) "389") + (data (i32.const 1576) "390") + (data (i32.const 1580) "391") + (data (i32.const 1584) "392") + (data (i32.const 1588) "393") + (data (i32.const 1592) "394") + (data (i32.const 1596) "395") + (data (i32.const 1600) "396") + (data (i32.const 1604) "397") + (data (i32.const 1608) "398") + (data (i32.const 1612) "399") + (data (i32.const 1616) "400") + (data (i32.const 1620) "401") + (data (i32.const 1624) "402") + (data (i32.const 1628) "403") + (data (i32.const 1632) "404") + (data (i32.const 1636) "405") + (data (i32.const 1640) "406") + (data (i32.const 1644) "407") + (data (i32.const 1648) "408") + (data (i32.const 1652) "409") + (data (i32.const 1656) "410") + (data (i32.const 1660) "411") + (data (i32.const 1664) "412") + (data (i32.const 1668) "413") + (data (i32.const 1672) "414") + (data (i32.const 1676) "415") + (data (i32.const 1680) "416") + (data (i32.const 1684) "417") + (data (i32.const 1688) "418") + (data (i32.const 1692) "419") + (data (i32.const 1696) "420") + (data (i32.const 1700) "421") + (data (i32.const 1704) "422") + (data (i32.const 1708) "423") + (data (i32.const 1712) "424") + (data (i32.const 1716) "425") + (data (i32.const 1720) "426") + (data (i32.const 1724) "427") + (data (i32.const 1728) "428") + (data (i32.const 1732) "429") + (data (i32.const 1736) "430") + (data (i32.const 1740) "431") + (data (i32.const 1744) "432") + (data (i32.const 1748) "433") + (data (i32.const 1752) "434") + (data (i32.const 1756) "435") + (data (i32.const 1760) "436") + (data (i32.const 1764) "437") + (data (i32.const 1768) "438") + (data (i32.const 1772) "439") + (data (i32.const 1776) "440") + (data (i32.const 1780) "441") + (data (i32.const 1784) "442") + (data (i32.const 1788) "443") + (data (i32.const 1792) "444") + (data (i32.const 1796) "445") + (data (i32.const 1800) "446") + (data (i32.const 1804) "447") + (data (i32.const 1808) "448") + (data (i32.const 1812) "449") + (data (i32.const 1816) "450") + (data (i32.const 1820) "451") + (data (i32.const 1824) "452") + (data (i32.const 1828) "453") + (data (i32.const 1832) "454") + (data (i32.const 1836) "455") + (data (i32.const 1840) "456") + (data (i32.const 1844) "457") + (data (i32.const 1848) "458") + (data (i32.const 1852) "459") + (data (i32.const 1856) "460") + (data (i32.const 1860) "461") + (data (i32.const 1864) "462") + (data (i32.const 1868) "463") + (data (i32.const 1872) "464") + (data (i32.const 1876) "465") + (data (i32.const 1880) "466") + (data (i32.const 1884) "467") + (data (i32.const 1888) "468") + (data (i32.const 1892) "469") + (data (i32.const 1896) "470") + (data (i32.const 1900) "471") + (data (i32.const 1904) "472") + (data (i32.const 1908) "473") + (data (i32.const 1912) "474") + (data (i32.const 1916) "475") + (data (i32.const 1920) "476") + (data (i32.const 1924) "477") + (data (i32.const 1928) "478") + (data (i32.const 1932) "479") + (data (i32.const 1936) "480") + (data (i32.const 1940) "481") + (data (i32.const 1944) "482") + (data (i32.const 1948) "483") + (data (i32.const 1952) "484") + (data (i32.const 1956) "485") + (data (i32.const 1960) "486") + (data (i32.const 1964) "487") + (data (i32.const 1968) "488") + (data (i32.const 1972) "489") + (data (i32.const 1976) "490") + (data (i32.const 1980) "491") + (data (i32.const 1984) "492") + (data (i32.const 1988) "493") + (data (i32.const 1992) "494") + (data (i32.const 1996) "495") + (data (i32.const 2000) "496") + (data (i32.const 2004) "497") + (data (i32.const 2008) "498") + (data (i32.const 2012) "499") + (data (i32.const 2016) "500") + (data (i32.const 2020) "501") + (data (i32.const 2024) "502") + (data (i32.const 2028) "503") + (data (i32.const 2032) "504") + (data (i32.const 2036) "505") + (data (i32.const 2040) "506") + (data (i32.const 2044) "507") + (data (i32.const 2048) "508") + (data (i32.const 2052) "509") + (data (i32.const 2056) "510") + (data (i32.const 2060) "511") + (data (i32.const 2064) "512") + (data (i32.const 2068) "513") + (data (i32.const 2072) "514") + (data (i32.const 2076) "515") + (data (i32.const 2080) "516") + (data (i32.const 2084) "517") + (data (i32.const 2088) "518") + (data (i32.const 2092) "519") + (data (i32.const 2096) "520") + (data (i32.const 2100) "521") + (data (i32.const 2104) "522") + (data (i32.const 2108) "523") + (data (i32.const 2112) "524") + (data (i32.const 2116) "525") + (data (i32.const 2120) "526") + (data (i32.const 2124) "527") + (data (i32.const 2128) "528") + (data (i32.const 2132) "529") + (data (i32.const 2136) "530") + (data (i32.const 2140) "531") + (data (i32.const 2144) "532") + (data (i32.const 2148) "533") + (data (i32.const 2152) "534") + (data (i32.const 2156) "535") + (data (i32.const 2160) "536") + (data (i32.const 2164) "537") + (data (i32.const 2168) "538") + (data (i32.const 2172) "539") + (data (i32.const 2176) "540") + (data (i32.const 2180) "541") + (data (i32.const 2184) "542") + (data (i32.const 2188) "543") + (data (i32.const 2192) "544") + (data (i32.const 2196) "545") + (data (i32.const 2200) "546") + (data (i32.const 2204) "547") + (data (i32.const 2208) "548") + (data (i32.const 2212) "549") + (data (i32.const 2216) "550") + (data (i32.const 2220) "551") + (data (i32.const 2224) "552") + (data (i32.const 2228) "553") + (data (i32.const 2232) "554") + (data (i32.const 2236) "555") + (data (i32.const 2240) "556") + (data (i32.const 2244) "557") + (data (i32.const 2248) "558") + (data (i32.const 2252) "559") + (data (i32.const 2256) "560") + (data (i32.const 2260) "561") + (data (i32.const 2264) "562") + (data (i32.const 2268) "563") + (data (i32.const 2272) "564") + (data (i32.const 2276) "565") + (data (i32.const 2280) "566") + (data (i32.const 2284) "567") + (data (i32.const 2288) "568") + (data (i32.const 2292) "569") + (data (i32.const 2296) "570") + (data (i32.const 2300) "571") + (data (i32.const 2304) "572") + (data (i32.const 2308) "573") + (data (i32.const 2312) "574") + (data (i32.const 2316) "575") + (data (i32.const 2320) "576") + (data (i32.const 2324) "577") + (data (i32.const 2328) "578") + (data (i32.const 2332) "579") + (data (i32.const 2336) "580") + (data (i32.const 2340) "581") + (data (i32.const 2344) "582") + (data (i32.const 2348) "583") + (data (i32.const 2352) "584") + (data (i32.const 2356) "585") + (data (i32.const 2360) "586") + (data (i32.const 2364) "587") + (data (i32.const 2368) "588") + (data (i32.const 2372) "589") + (data (i32.const 2376) "590") + (data (i32.const 2380) "591") + (data (i32.const 2384) "592") + (data (i32.const 2388) "593") + (data (i32.const 2392) "594") + (data (i32.const 2396) "595") + (data (i32.const 2400) "596") + (data (i32.const 2404) "597") + (data (i32.const 2408) "598") + (data (i32.const 2412) "599") + (data (i32.const 2416) "600") + (data (i32.const 2420) "601") + (data (i32.const 2424) "602") + (data (i32.const 2428) "603") + (data (i32.const 2432) "604") + (data (i32.const 2436) "605") + (data (i32.const 2440) "606") + (data (i32.const 2444) "607") + (data (i32.const 2448) "608") + (data (i32.const 2452) "609") + (data (i32.const 2456) "610") + (data (i32.const 2460) "611") + (data (i32.const 2464) "612") + (data (i32.const 2468) "613") + (data (i32.const 2472) "614") + (data (i32.const 2476) "615") + (data (i32.const 2480) "616") + (data (i32.const 2484) "617") + (data (i32.const 2488) "618") + (data (i32.const 2492) "619") + (data (i32.const 2496) "620") + (data (i32.const 2500) "621") + (data (i32.const 2504) "622") + (data (i32.const 2508) "623") + (data (i32.const 2512) "624") + (data (i32.const 2516) "625") + (data (i32.const 2520) "626") + (data (i32.const 2524) "627") + (data (i32.const 2528) "628") + (data (i32.const 2532) "629") + (data (i32.const 2536) "630") + (data (i32.const 2540) "631") + (data (i32.const 2544) "632") + (data (i32.const 2548) "633") + (data (i32.const 2552) "634") + (data (i32.const 2556) "635") + (data (i32.const 2560) "636") + (data (i32.const 2564) "637") + (data (i32.const 2568) "638") + (data (i32.const 2572) "639") + (data (i32.const 2576) "640") + (data (i32.const 2580) "641") + (data (i32.const 2584) "642") + (data (i32.const 2588) "643") + (data (i32.const 2592) "644") + (data (i32.const 2596) "645") + (data (i32.const 2600) "646") + (data (i32.const 2604) "647") + (data (i32.const 2608) "648") + (data (i32.const 2612) "649") + (data (i32.const 2616) "650") + (data (i32.const 2620) "651") + (data (i32.const 2624) "652") + (data (i32.const 2628) "653") + (data (i32.const 2632) "654") + (data (i32.const 2636) "655") + (data (i32.const 2640) "656") + (data (i32.const 2644) "657") + (data (i32.const 2648) "658") + (data (i32.const 2652) "659") + (data (i32.const 2656) "660") + (data (i32.const 2660) "661") + (data (i32.const 2664) "662") + (data (i32.const 2668) "663") + (data (i32.const 2672) "664") + (data (i32.const 2676) "665") + (data (i32.const 2680) "666") + (data (i32.const 2684) "667") + (data (i32.const 2688) "668") + (data (i32.const 2692) "669") + (data (i32.const 2696) "670") + (data (i32.const 2700) "671") + (data (i32.const 2704) "672") + (data (i32.const 2708) "673") + (data (i32.const 2712) "674") + (data (i32.const 2716) "675") + (data (i32.const 2720) "676") + (data (i32.const 2724) "677") + (data (i32.const 2728) "678") + (data (i32.const 2732) "679") + (data (i32.const 2736) "680") + (data (i32.const 2740) "681") + (data (i32.const 2744) "682") + (data (i32.const 2748) "683") + (data (i32.const 2752) "684") + (data (i32.const 2756) "685") + (data (i32.const 2760) "686") + (data (i32.const 2764) "687") + (data (i32.const 2768) "688") + (data (i32.const 2772) "689") + (data (i32.const 2776) "690") + (data (i32.const 2780) "691") + (data (i32.const 2784) "692") + (data (i32.const 2788) "693") + (data (i32.const 2792) "694") + (data (i32.const 2796) "695") + (data (i32.const 2800) "696") + (data (i32.const 2804) "697") + (data (i32.const 2808) "698") + (data (i32.const 2812) "699") + (data (i32.const 2816) "700") + (data (i32.const 2820) "701") + (data (i32.const 2824) "702") + (data (i32.const 2828) "703") + (data (i32.const 2832) "704") + (data (i32.const 2836) "705") + (data (i32.const 2840) "706") + (data (i32.const 2844) "707") + (data (i32.const 2848) "708") + (data (i32.const 2852) "709") + (data (i32.const 2856) "710") + (data (i32.const 2860) "711") + (data (i32.const 2864) "712") + (data (i32.const 2868) "713") + (data (i32.const 2872) "714") + (data (i32.const 2876) "715") + (data (i32.const 2880) "716") + (data (i32.const 2884) "717") + (data (i32.const 2888) "718") + (data (i32.const 2892) "719") + (data (i32.const 2896) "720") + (data (i32.const 2900) "721") + (data (i32.const 2904) "722") + (data (i32.const 2908) "723") + (data (i32.const 2912) "724") + (data (i32.const 2916) "725") + (data (i32.const 2920) "726") + (data (i32.const 2924) "727") + (data (i32.const 2928) "728") + (data (i32.const 2932) "729") + (data (i32.const 2936) "730") + (data (i32.const 2940) "731") + (data (i32.const 2944) "732") + (data (i32.const 2948) "733") + (data (i32.const 2952) "734") + (data (i32.const 2956) "735") + (data (i32.const 2960) "736") + (data (i32.const 2964) "737") + (data (i32.const 2968) "738") + (data (i32.const 2972) "739") + (data (i32.const 2976) "740") + (data (i32.const 2980) "741") + (data (i32.const 2984) "742") + (data (i32.const 2988) "743") + (data (i32.const 2992) "744") + (data (i32.const 2996) "745") + (data (i32.const 3000) "746") + (data (i32.const 3004) "747") + (data (i32.const 3008) "748") + (data (i32.const 3012) "749") + (data (i32.const 3016) "750") + (data (i32.const 3020) "751") + (data (i32.const 3024) "752") + (data (i32.const 3028) "753") + (data (i32.const 3032) "754") + (data (i32.const 3036) "755") + (data (i32.const 3040) "756") + (data (i32.const 3044) "757") + (data (i32.const 3048) "758") + (data (i32.const 3052) "759") + (data (i32.const 3056) "760") + (data (i32.const 3060) "761") + (data (i32.const 3064) "762") + (data (i32.const 3068) "763") + (data (i32.const 3072) "764") + (data (i32.const 3076) "765") + (data (i32.const 3080) "766") + (data (i32.const 3084) "767") + (data (i32.const 3088) "768") + (data (i32.const 3092) "769") + (data (i32.const 3096) "770") + (data (i32.const 3100) "771") + (data (i32.const 3104) "772") + (data (i32.const 3108) "773") + (data (i32.const 3112) "774") + (data (i32.const 3116) "775") + (data (i32.const 3120) "776") + (data (i32.const 3124) "777") + (data (i32.const 3128) "778") + (data (i32.const 3132) "779") + (data (i32.const 3136) "780") + (data (i32.const 3140) "781") + (data (i32.const 3144) "782") + (data (i32.const 3148) "783") + (data (i32.const 3152) "784") + (data (i32.const 3156) "785") + (data (i32.const 3160) "786") + (data (i32.const 3164) "787") + (data (i32.const 3168) "788") + (data (i32.const 3172) "789") + (data (i32.const 3176) "790") + (data (i32.const 3180) "791") + (data (i32.const 3184) "792") + (data (i32.const 3188) "793") + (data (i32.const 3192) "794") + (data (i32.const 3196) "795") + (data (i32.const 3200) "796") + (data (i32.const 3204) "797") + (data (i32.const 3208) "798") + (data (i32.const 3212) "799") + (data (i32.const 3216) "800") + (data (i32.const 3220) "801") + (data (i32.const 3224) "802") + (data (i32.const 3228) "803") + (data (i32.const 3232) "804") + (data (i32.const 3236) "805") + (data (i32.const 3240) "806") + (data (i32.const 3244) "807") + (data (i32.const 3248) "808") + (data (i32.const 3252) "809") + (data (i32.const 3256) "810") + (data (i32.const 3260) "811") + (data (i32.const 3264) "812") + (data (i32.const 3268) "813") + (data (i32.const 3272) "814") + (data (i32.const 3276) "815") + (data (i32.const 3280) "816") + (data (i32.const 3284) "817") + (data (i32.const 3288) "818") + (data (i32.const 3292) "819") + (data (i32.const 3296) "820") + (data (i32.const 3300) "821") + (data (i32.const 3304) "822") + (data (i32.const 3308) "823") + (data (i32.const 3312) "824") + (data (i32.const 3316) "825") + (data (i32.const 3320) "826") + (data (i32.const 3324) "827") + (data (i32.const 3328) "828") + (data (i32.const 3332) "829") + (data (i32.const 3336) "830") + (data (i32.const 3340) "831") + (data (i32.const 3344) "832") + (data (i32.const 3348) "833") + (data (i32.const 3352) "834") + (data (i32.const 3356) "835") + (data (i32.const 3360) "836") + (data (i32.const 3364) "837") + (data (i32.const 3368) "838") + (data (i32.const 3372) "839") + (data (i32.const 3376) "840") + (data (i32.const 3380) "841") + (data (i32.const 3384) "842") + (data (i32.const 3388) "843") + (data (i32.const 3392) "844") + (data (i32.const 3396) "845") + (data (i32.const 3400) "846") + (data (i32.const 3404) "847") + (data (i32.const 3408) "848") + (data (i32.const 3412) "849") + (data (i32.const 3416) "850") + (data (i32.const 3420) "851") + (data (i32.const 3424) "852") + (data (i32.const 3428) "853") + (data (i32.const 3432) "854") + (data (i32.const 3436) "855") + (data (i32.const 3440) "856") + (data (i32.const 3444) "857") + (data (i32.const 3448) "858") + (data (i32.const 3452) "859") + (data (i32.const 3456) "860") + (data (i32.const 3460) "861") + (data (i32.const 3464) "862") + (data (i32.const 3468) "863") + (data (i32.const 3472) "864") + (data (i32.const 3476) "865") + (data (i32.const 3480) "866") + (data (i32.const 3484) "867") + (data (i32.const 3488) "868") + (data (i32.const 3492) "869") + (data (i32.const 3496) "870") + (data (i32.const 3500) "871") + (data (i32.const 3504) "872") + (data (i32.const 3508) "873") + (data (i32.const 3512) "874") + (data (i32.const 3516) "875") + (data (i32.const 3520) "876") + (data (i32.const 3524) "877") + (data (i32.const 3528) "878") + (data (i32.const 3532) "879") + (data (i32.const 3536) "880") + (data (i32.const 3540) "881") + (data (i32.const 3544) "882") + (data (i32.const 3548) "883") + (data (i32.const 3552) "884") + (data (i32.const 3556) "885") + (data (i32.const 3560) "886") + (data (i32.const 3564) "887") + (data (i32.const 3568) "888") + (data (i32.const 3572) "889") + (data (i32.const 3576) "890") + (data (i32.const 3580) "891") + (data (i32.const 3584) "892") + (data (i32.const 3588) "893") + (data (i32.const 3592) "894") + (data (i32.const 3596) "895") + (data (i32.const 3600) "896") + (data (i32.const 3604) "897") + (data (i32.const 3608) "898") + (data (i32.const 3612) "899") + (data (i32.const 3616) "900") + (data (i32.const 3620) "901") + (data (i32.const 3624) "902") + (data (i32.const 3628) "903") + (data (i32.const 3632) "904") + (data (i32.const 3636) "905") + (data (i32.const 3640) "906") + (data (i32.const 3644) "907") + (data (i32.const 3648) "908") + (data (i32.const 3652) "909") + (data (i32.const 3656) "910") + (data (i32.const 3660) "911") + (data (i32.const 3664) "912") + (data (i32.const 3668) "913") + (data (i32.const 3672) "914") + (data (i32.const 3676) "915") + (data (i32.const 3680) "916") + (data (i32.const 3684) "917") + (data (i32.const 3688) "918") + (data (i32.const 3692) "919") + (data (i32.const 3696) "920") + (data (i32.const 3700) "921") + (data (i32.const 3704) "922") + (data (i32.const 3708) "923") + (data (i32.const 3712) "924") + (data (i32.const 3716) "925") + (data (i32.const 3720) "926") + (data (i32.const 3724) "927") + (data (i32.const 3728) "928") + (data (i32.const 3732) "929") + (data (i32.const 3736) "930") + (data (i32.const 3740) "931") + (data (i32.const 3744) "932") + (data (i32.const 3748) "933") + (data (i32.const 3752) "934") + (data (i32.const 3756) "935") + (data (i32.const 3760) "936") + (data (i32.const 3764) "937") + (data (i32.const 3768) "938") + (data (i32.const 3772) "939") + (data (i32.const 3776) "940") + (data (i32.const 3780) "941") + (data (i32.const 3784) "942") + (data (i32.const 3788) "943") + (data (i32.const 3792) "944") + (data (i32.const 3796) "945") + (data (i32.const 3800) "946") + (data (i32.const 3804) "947") + (data (i32.const 3808) "948") + (data (i32.const 3812) "949") + (data (i32.const 3816) "950") + (data (i32.const 3820) "951") + (data (i32.const 3824) "952") + (data (i32.const 3828) "953") + (data (i32.const 3832) "954") + (data (i32.const 3836) "955") + (data (i32.const 3840) "956") + (data (i32.const 3844) "957") + (data (i32.const 3848) "958") + (data (i32.const 3852) "959") + (data (i32.const 3856) "960") + (data (i32.const 3860) "961") + (data (i32.const 3864) "962") + (data (i32.const 3868) "963") + (data (i32.const 3872) "964") + (data (i32.const 3876) "965") + (data (i32.const 3880) "966") + (data (i32.const 3884) "967") + (data (i32.const 3888) "968") + (data (i32.const 3892) "969") + (data (i32.const 3896) "970") + (data (i32.const 3900) "971") + (data (i32.const 3904) "972") + (data (i32.const 3908) "973") + (data (i32.const 3912) "974") + (data (i32.const 3916) "975") + (data (i32.const 3920) "976") + (data (i32.const 3924) "977") + (data (i32.const 3928) "978") + (data (i32.const 3932) "979") + (data (i32.const 3936) "980") + (data (i32.const 3940) "981") + (data (i32.const 3944) "982") + (data (i32.const 3948) "983") + (data (i32.const 3952) "984") + (data (i32.const 3956) "985") + (data (i32.const 3960) "986") + (data (i32.const 3964) "987") + (data (i32.const 3968) "988") + (data (i32.const 3972) "989") + (data (i32.const 3976) "990") + (data (i32.const 3980) "991") + (data (i32.const 3984) "992") + (data (i32.const 3988) "993") + (data (i32.const 3992) "994") + (data (i32.const 3996) "995") + (data (i32.const 4000) "996") + (data (i32.const 4004) "997") + (data (i32.const 4008) "998") + (data (i32.const 4012) "999") + (data (i32.const 4016) "1000") + (data (i32.const 4020) "1001") + (data (i32.const 4024) "1002") + (data (i32.const 4028) "1003") + (data (i32.const 4032) "1004") + (data (i32.const 4036) "1005") + (data (i32.const 4040) "1006") + (data (i32.const 4044) "1007") + (data (i32.const 4048) "1008") + (data (i32.const 4052) "1009") + (data (i32.const 4056) "1010") + (data (i32.const 4060) "1011") + (data (i32.const 4064) "1012") + (data (i32.const 4068) "1013") + (data (i32.const 4072) "1014") + (data (i32.const 4076) "1015") + (data (i32.const 4080) "1016") + (data (i32.const 4084) "1017") + (data (i32.const 4088) "1018") + (data (i32.const 4092) "1019") + (data (i32.const 4096) "1020") + (data (i32.const 4100) "1021") + (data (i32.const 4104) "1022") + (data (i32.const 4108) "1023") + (data (i32.const 4112) "1024") + (data (i32.const 4116) "1025") + (data (i32.const 4120) "1026") + (data (i32.const 4124) "1027") + (data (i32.const 4128) "1028") + (data (i32.const 4132) "1029") + (data (i32.const 4136) "1030") + (data (i32.const 4140) "1031") + (data (i32.const 4144) "1032") + (data (i32.const 4148) "1033") + (data (i32.const 4152) "1034") + (data (i32.const 4156) "1035") + (data (i32.const 4160) "1036") + (data (i32.const 4164) "1037") + (data (i32.const 4168) "1038") + (data (i32.const 4172) "1039") + (data (i32.const 4176) "1040") + (data (i32.const 4180) "1041") + (data (i32.const 4184) "1042") + (data (i32.const 4188) "1043") + (data (i32.const 4192) "1044") + (data (i32.const 4196) "1045") + (data (i32.const 4200) "1046") + (data (i32.const 4204) "1047") + (data (i32.const 4208) "1048") + (data (i32.const 4212) "1049") + (data (i32.const 4216) "1050") + (data (i32.const 4220) "1051") + (data (i32.const 4224) "1052") + (data (i32.const 4228) "1053") + (data (i32.const 4232) "1054") + (data (i32.const 4236) "1055") + (data (i32.const 4240) "1056") + (data (i32.const 4244) "1057") + (data (i32.const 4248) "1058") + (data (i32.const 4252) "1059") + (data (i32.const 4256) "1060") + (data (i32.const 4260) "1061") + (data (i32.const 4264) "1062") + (data (i32.const 4268) "1063") + (data (i32.const 4272) "1064") + (data (i32.const 4276) "1065") + (data (i32.const 4280) "1066") + (data (i32.const 4284) "1067") + (data (i32.const 4288) "1068") + (data (i32.const 4292) "1069") + (data (i32.const 4296) "1070") + (data (i32.const 4300) "1071") + (data (i32.const 4304) "1072") + (data (i32.const 4308) "1073") + (data (i32.const 4312) "1074") + (data (i32.const 4316) "1075") + (data (i32.const 4320) "1076") + (data (i32.const 4324) "1077") + (data (i32.const 4328) "1078") + (data (i32.const 4332) "1079") + (data (i32.const 4336) "1080") + (data (i32.const 4340) "1081") + (data (i32.const 4344) "1082") + (data (i32.const 4348) "1083") + (data (i32.const 4352) "1084") + (data (i32.const 4356) "1085") + (data (i32.const 4360) "1086") + (data (i32.const 4364) "1087") + (data (i32.const 4368) "1088") + (data (i32.const 4372) "1089") + (data (i32.const 4376) "1090") + (data (i32.const 4380) "1091") + (data (i32.const 4384) "1092") + (data (i32.const 4388) "1093") + (data (i32.const 4392) "1094") + (data (i32.const 4396) "1095") + (data (i32.const 4400) "1096") + (data (i32.const 4404) "1097") + (data (i32.const 4408) "1098") + (data (i32.const 4412) "1099") + (data (i32.const 4416) "1100") + (data (i32.const 4420) "1101") + (data (i32.const 4424) "1102") + (data (i32.const 4428) "1103") + (data (i32.const 4432) "1104") + (data (i32.const 4436) "1105") + (data (i32.const 4440) "1106") + (data (i32.const 4444) "1107") + (data (i32.const 4448) "1108") + (data (i32.const 4452) "1109") + (data (i32.const 4456) "1110") + (data (i32.const 4460) "1111") + (data (i32.const 4464) "1112") + (data (i32.const 4468) "1113") + (data (i32.const 4472) "1114") + (data (i32.const 4476) "1115") + (data (i32.const 4480) "1116") + (data (i32.const 4484) "1117") + (data (i32.const 4488) "1118") + (data (i32.const 4492) "1119") + (data (i32.const 4496) "1120") + (data (i32.const 4500) "1121") + (data (i32.const 4504) "1122") + (data (i32.const 4508) "1123") + (data (i32.const 4512) "1124") + (data (i32.const 4516) "1125") + (data (i32.const 4520) "1126") + (data (i32.const 4524) "1127") + (data (i32.const 4528) "1128") + (data (i32.const 4532) "1129") + (data (i32.const 4536) "1130") + (data (i32.const 4540) "1131") + (data (i32.const 4544) "1132") + (data (i32.const 4548) "1133") + (data (i32.const 4552) "1134") + (data (i32.const 4556) "1135") + (data (i32.const 4560) "1136") + (data (i32.const 4564) "1137") + (data (i32.const 4568) "1138") + (data (i32.const 4572) "1139") + (data (i32.const 4576) "1140") + (data (i32.const 4580) "1141") + (data (i32.const 4584) "1142") + (data (i32.const 4588) "1143") + (data (i32.const 4592) "1144") + (data (i32.const 4596) "1145") + (data (i32.const 4600) "1146") + (data (i32.const 4604) "1147") + (data (i32.const 4608) "1148") + (data (i32.const 4612) "1149") + (data (i32.const 4616) "1150") + (data (i32.const 4620) "1151") + (data (i32.const 4624) "1152") + (data (i32.const 4628) "1153") + (data (i32.const 4632) "1154") + (data (i32.const 4636) "1155") + (data (i32.const 4640) "1156") + (data (i32.const 4644) "1157") + (data (i32.const 4648) "1158") + (data (i32.const 4652) "1159") + (data (i32.const 4656) "1160") + (data (i32.const 4660) "1161") + (data (i32.const 4664) "1162") + (data (i32.const 4668) "1163") + (data (i32.const 4672) "1164") + (data (i32.const 4676) "1165") + (data (i32.const 4680) "1166") + (data (i32.const 4684) "1167") + (data (i32.const 4688) "1168") + (data (i32.const 4692) "1169") + (data (i32.const 4696) "1170") + (data (i32.const 4700) "1171") + (data (i32.const 4704) "1172") + (data (i32.const 4708) "1173") + (data (i32.const 4712) "1174") + (data (i32.const 4716) "1175") + (data (i32.const 4720) "1176") + (data (i32.const 4724) "1177") + (data (i32.const 4728) "1178") + (data (i32.const 4732) "1179") + (data (i32.const 4736) "1180") + (data (i32.const 4740) "1181") + (data (i32.const 4744) "1182") + (data (i32.const 4748) "1183") + (data (i32.const 4752) "1184") + (data (i32.const 4756) "1185") + (data (i32.const 4760) "1186") + (data (i32.const 4764) "1187") + (data (i32.const 4768) "1188") + (data (i32.const 4772) "1189") + (data (i32.const 4776) "1190") + (data (i32.const 4780) "1191") + (data (i32.const 4784) "1192") + (data (i32.const 4788) "1193") + (data (i32.const 4792) "1194") + (data (i32.const 4796) "1195") + (data (i32.const 4800) "1196") + (data (i32.const 4804) "1197") + (data (i32.const 4808) "1198") + (data (i32.const 4812) "1199") + (data (i32.const 4816) "1200") + (data (i32.const 4820) "1201") + (data (i32.const 4824) "1202") + (data (i32.const 4828) "1203") + (data (i32.const 4832) "1204") + (data (i32.const 4836) "1205") + (data (i32.const 4840) "1206") + (data (i32.const 4844) "1207") + (data (i32.const 4848) "1208") + (data (i32.const 4852) "1209") + (data (i32.const 4856) "1210") + (data (i32.const 4860) "1211") + (data (i32.const 4864) "1212") + (data (i32.const 4868) "1213") + (data (i32.const 4872) "1214") + (data (i32.const 4876) "1215") + (data (i32.const 4880) "1216") + (data (i32.const 4884) "1217") + (data (i32.const 4888) "1218") + (data (i32.const 4892) "1219") + (data (i32.const 4896) "1220") + (data (i32.const 4900) "1221") + (data (i32.const 4904) "1222") + (data (i32.const 4908) "1223") + (data (i32.const 4912) "1224") + (data (i32.const 4916) "1225") + (data (i32.const 4920) "1226") + (data (i32.const 4924) "1227") + (data (i32.const 4928) "1228") + (data (i32.const 4932) "1229") + (data (i32.const 4936) "1230") + (data (i32.const 4940) "1231") + (data (i32.const 4944) "1232") + (data (i32.const 4948) "1233") + (data (i32.const 4952) "1234") + (data (i32.const 4956) "1235") + (data (i32.const 4960) "1236") + (data (i32.const 4964) "1237") + (data (i32.const 4968) "1238") + (data (i32.const 4972) "1239") + (data (i32.const 4976) "1240") + (data (i32.const 4980) "1241") + (data (i32.const 4984) "1242") + (data (i32.const 4988) "1243") + (data (i32.const 4992) "1244") + (data (i32.const 4996) "1245") + (data (i32.const 5000) "1246") + (data (i32.const 5004) "1247") + (data (i32.const 5008) "1248") + (data (i32.const 5012) "1249") + (data (i32.const 5016) "1250") + (data (i32.const 5020) "1251") + (data (i32.const 5024) "1252") + (data (i32.const 5028) "1253") + (data (i32.const 5032) "1254") + (data (i32.const 5036) "1255") + (data (i32.const 5040) "1256") + (data (i32.const 5044) "1257") + (data (i32.const 5048) "1258") + (data (i32.const 5052) "1259") + (data (i32.const 5056) "1260") + (data (i32.const 5060) "1261") + (data (i32.const 5064) "1262") + (data (i32.const 5068) "1263") + (data (i32.const 5072) "1264") + (data (i32.const 5076) "1265") + (data (i32.const 5080) "1266") + (data (i32.const 5084) "1267") + (data (i32.const 5088) "1268") + (data (i32.const 5092) "1269") + (data (i32.const 5096) "1270") + (data (i32.const 5100) "1271") + (data (i32.const 5104) "1272") + (data (i32.const 5108) "1273") + (data (i32.const 5112) "1274") + (data (i32.const 5116) "1275") + (data (i32.const 5120) "1276") + (data (i32.const 5124) "1277") + (data (i32.const 5128) "1278") + (data (i32.const 5132) "1279") + (data (i32.const 5136) "1280") + (data (i32.const 5140) "1281") + (data (i32.const 5144) "1282") + (data (i32.const 5148) "1283") + (data (i32.const 5152) "1284") + (data (i32.const 5156) "1285") + (data (i32.const 5160) "1286") + (data (i32.const 5164) "1287") + (data (i32.const 5168) "1288") + (data (i32.const 5172) "1289") + (data (i32.const 5176) "1290") + (data (i32.const 5180) "1291") + (data (i32.const 5184) "1292") + (data (i32.const 5188) "1293") + (data (i32.const 5192) "1294") + (data (i32.const 5196) "1295") + (data (i32.const 5200) "1296") + (data (i32.const 5204) "1297") + (data (i32.const 5208) "1298") + (data (i32.const 5212) "1299") + (data (i32.const 5216) "1300") + (data (i32.const 5220) "1301") + (data (i32.const 5224) "1302") + (data (i32.const 5228) "1303") + (data (i32.const 5232) "1304") + (data (i32.const 5236) "1305") + (data (i32.const 5240) "1306") + (data (i32.const 5244) "1307") + (data (i32.const 5248) "1308") + (data (i32.const 5252) "1309") + (data (i32.const 5256) "1310") + (data (i32.const 5260) "1311") + (data (i32.const 5264) "1312") + (data (i32.const 5268) "1313") + (data (i32.const 5272) "1314") + (data (i32.const 5276) "1315") + (data (i32.const 5280) "1316") + (data (i32.const 5284) "1317") + (data (i32.const 5288) "1318") + (data (i32.const 5292) "1319") + (data (i32.const 5296) "1320") + (data (i32.const 5300) "1321") + (data (i32.const 5304) "1322") + (data (i32.const 5308) "1323") + (data (i32.const 5312) "1324") + (data (i32.const 5316) "1325") + (data (i32.const 5320) "1326") + (data (i32.const 5324) "1327") + (data (i32.const 5328) "1328") + (data (i32.const 5332) "1329") + (data (i32.const 5336) "1330") + (data (i32.const 5340) "1331") + (data (i32.const 5344) "1332") + (data (i32.const 5348) "1333") + (data (i32.const 5352) "1334") + (data (i32.const 5356) "1335") + (data (i32.const 5360) "1336") + (data (i32.const 5364) "1337") + (data (i32.const 5368) "1338") + (data (i32.const 5372) "1339") + (data (i32.const 5376) "1340") + (data (i32.const 5380) "1341") + (data (i32.const 5384) "1342") + (data (i32.const 5388) "1343") + (data (i32.const 5392) "1344") + (data (i32.const 5396) "1345") + (data (i32.const 5400) "1346") + (data (i32.const 5404) "1347") + (data (i32.const 5408) "1348") + (data (i32.const 5412) "1349") + (data (i32.const 5416) "1350") + (data (i32.const 5420) "1351") + (data (i32.const 5424) "1352") + (data (i32.const 5428) "1353") + (data (i32.const 5432) "1354") + (data (i32.const 5436) "1355") + (data (i32.const 5440) "1356") + (data (i32.const 5444) "1357") + (data (i32.const 5448) "1358") + (data (i32.const 5452) "1359") + (data (i32.const 5456) "1360") + (data (i32.const 5460) "1361") + (data (i32.const 5464) "1362") + (data (i32.const 5468) "1363") + (data (i32.const 5472) "1364") + (data (i32.const 5476) "1365") + (data (i32.const 5480) "1366") + (data (i32.const 5484) "1367") + (data (i32.const 5488) "1368") + (data (i32.const 5492) "1369") + (data (i32.const 5496) "1370") + (data (i32.const 5500) "1371") + (data (i32.const 5504) "1372") + (data (i32.const 5508) "1373") + (data (i32.const 5512) "1374") + (data (i32.const 5516) "1375") + (data (i32.const 5520) "1376") + (data (i32.const 5524) "1377") + (data (i32.const 5528) "1378") + (data (i32.const 5532) "1379") + (data (i32.const 5536) "1380") + (data (i32.const 5540) "1381") + (data (i32.const 5544) "1382") + (data (i32.const 5548) "1383") + (data (i32.const 5552) "1384") + (data (i32.const 5556) "1385") + (data (i32.const 5560) "1386") + (data (i32.const 5564) "1387") + (data (i32.const 5568) "1388") + (data (i32.const 5572) "1389") + (data (i32.const 5576) "1390") + (data (i32.const 5580) "1391") + (data (i32.const 5584) "1392") + (data (i32.const 5588) "1393") + (data (i32.const 5592) "1394") + (data (i32.const 5596) "1395") + (data (i32.const 5600) "1396") + (data (i32.const 5604) "1397") + (data (i32.const 5608) "1398") + (data (i32.const 5612) "1399") + (data (i32.const 5616) "1400") + (data (i32.const 5620) "1401") + (data (i32.const 5624) "1402") + (data (i32.const 5628) "1403") + (data (i32.const 5632) "1404") + (data (i32.const 5636) "1405") + (data (i32.const 5640) "1406") + (data (i32.const 5644) "1407") + (data (i32.const 5648) "1408") + (data (i32.const 5652) "1409") + (data (i32.const 5656) "1410") + (data (i32.const 5660) "1411") + (data (i32.const 5664) "1412") + (data (i32.const 5668) "1413") + (data (i32.const 5672) "1414") + (data (i32.const 5676) "1415") + (data (i32.const 5680) "1416") + (data (i32.const 5684) "1417") + (data (i32.const 5688) "1418") + (data (i32.const 5692) "1419") + (data (i32.const 5696) "1420") + (data (i32.const 5700) "1421") + (data (i32.const 5704) "1422") + (data (i32.const 5708) "1423") + (data (i32.const 5712) "1424") + (data (i32.const 5716) "1425") + (data (i32.const 5720) "1426") + (data (i32.const 5724) "1427") + (data (i32.const 5728) "1428") + (data (i32.const 5732) "1429") + (data (i32.const 5736) "1430") + (data (i32.const 5740) "1431") + (data (i32.const 5744) "1432") + (data (i32.const 5748) "1433") + (data (i32.const 5752) "1434") + (data (i32.const 5756) "1435") + (data (i32.const 5760) "1436") + (data (i32.const 5764) "1437") + (data (i32.const 5768) "1438") + (data (i32.const 5772) "1439") + (data (i32.const 5776) "1440") + (data (i32.const 5780) "1441") + (data (i32.const 5784) "1442") + (data (i32.const 5788) "1443") + (data (i32.const 5792) "1444") + (data (i32.const 5796) "1445") + (data (i32.const 5800) "1446") + (data (i32.const 5804) "1447") + (data (i32.const 5808) "1448") + (data (i32.const 5812) "1449") + (data (i32.const 5816) "1450") + (data (i32.const 5820) "1451") + (data (i32.const 5824) "1452") + (data (i32.const 5828) "1453") + (data (i32.const 5832) "1454") + (data (i32.const 5836) "1455") + (data (i32.const 5840) "1456") + (data (i32.const 5844) "1457") + (data (i32.const 5848) "1458") + (data (i32.const 5852) "1459") + (data (i32.const 5856) "1460") + (data (i32.const 5860) "1461") + (data (i32.const 5864) "1462") + (data (i32.const 5868) "1463") + (data (i32.const 5872) "1464") + (data (i32.const 5876) "1465") + (data (i32.const 5880) "1466") + (data (i32.const 5884) "1467") + (data (i32.const 5888) "1468") + (data (i32.const 5892) "1469") + (data (i32.const 5896) "1470") + (data (i32.const 5900) "1471") + (data (i32.const 5904) "1472") + (data (i32.const 5908) "1473") + (data (i32.const 5912) "1474") + (data (i32.const 5916) "1475") + (data (i32.const 5920) "1476") + (data (i32.const 5924) "1477") + (data (i32.const 5928) "1478") + (data (i32.const 5932) "1479") + (data (i32.const 5936) "1480") + (data (i32.const 5940) "1481") + (data (i32.const 5944) "1482") + (data (i32.const 5948) "1483") + (data (i32.const 5952) "1484") + (data (i32.const 5956) "1485") + (data (i32.const 5960) "1486") + (data (i32.const 5964) "1487") + (data (i32.const 5968) "1488") + (data (i32.const 5972) "1489") + (data (i32.const 5976) "1490") + (data (i32.const 5980) "1491") + (data (i32.const 5984) "1492") + (data (i32.const 5988) "1493") + (data (i32.const 5992) "1494") + (data (i32.const 5996) "1495") + (data (i32.const 6000) "1496") + (data (i32.const 6004) "1497") + (data (i32.const 6008) "1498") + (data (i32.const 6012) "1499") + (data (i32.const 6016) "1500") + (data (i32.const 6020) "1501") + (data (i32.const 6024) "1502") + (data (i32.const 6028) "1503") + (data (i32.const 6032) "1504") + (data (i32.const 6036) "1505") + (data (i32.const 6040) "1506") + (data (i32.const 6044) "1507") + (data (i32.const 6048) "1508") + (data (i32.const 6052) "1509") + (data (i32.const 6056) "1510") + (data (i32.const 6060) "1511") + (data (i32.const 6064) "1512") + (data (i32.const 6068) "1513") + (data (i32.const 6072) "1514") + (data (i32.const 6076) "1515") + (data (i32.const 6080) "1516") + (data (i32.const 6084) "1517") + (data (i32.const 6088) "1518") + (data (i32.const 6092) "1519") + (data (i32.const 6096) "1520") + (data (i32.const 6100) "1521") + (data (i32.const 6104) "1522") + (data (i32.const 6108) "1523") + (data (i32.const 6112) "1524") + (data (i32.const 6116) "1525") + (data (i32.const 6120) "1526") + (data (i32.const 6124) "1527") + (data (i32.const 6128) "1528") + (data (i32.const 6132) "1529") + (data (i32.const 6136) "1530") + (data (i32.const 6140) "1531") + (data (i32.const 6144) "1532") + (data (i32.const 6148) "1533") + (data (i32.const 6152) "1534") + (data (i32.const 6156) "1535") + (data (i32.const 6160) "1536") + (data (i32.const 6164) "1537") + (data (i32.const 6168) "1538") + (data (i32.const 6172) "1539") + (data (i32.const 6176) "1540") + (data (i32.const 6180) "1541") + (data (i32.const 6184) "1542") + (data (i32.const 6188) "1543") + (data (i32.const 6192) "1544") + (data (i32.const 6196) "1545") + (data (i32.const 6200) "1546") + (data (i32.const 6204) "1547") + (data (i32.const 6208) "1548") + (data (i32.const 6212) "1549") + (data (i32.const 6216) "1550") + (data (i32.const 6220) "1551") + (data (i32.const 6224) "1552") + (data (i32.const 6228) "1553") + (data (i32.const 6232) "1554") + (data (i32.const 6236) "1555") + (data (i32.const 6240) "1556") + (data (i32.const 6244) "1557") + (data (i32.const 6248) "1558") + (data (i32.const 6252) "1559") + (data (i32.const 6256) "1560") + (data (i32.const 6260) "1561") + (data (i32.const 6264) "1562") + (data (i32.const 6268) "1563") + (data (i32.const 6272) "1564") + (data (i32.const 6276) "1565") + (data (i32.const 6280) "1566") + (data (i32.const 6284) "1567") + (data (i32.const 6288) "1568") + (data (i32.const 6292) "1569") + (data (i32.const 6296) "1570") + (data (i32.const 6300) "1571") + (data (i32.const 6304) "1572") + (data (i32.const 6308) "1573") + (data (i32.const 6312) "1574") + (data (i32.const 6316) "1575") + (data (i32.const 6320) "1576") + (data (i32.const 6324) "1577") + (data (i32.const 6328) "1578") + (data (i32.const 6332) "1579") + (data (i32.const 6336) "1580") + (data (i32.const 6340) "1581") + (data (i32.const 6344) "1582") + (data (i32.const 6348) "1583") + (data (i32.const 6352) "1584") + (data (i32.const 6356) "1585") + (data (i32.const 6360) "1586") + (data (i32.const 6364) "1587") + (data (i32.const 6368) "1588") + (data (i32.const 6372) "1589") + (data (i32.const 6376) "1590") + (data (i32.const 6380) "1591") + (data (i32.const 6384) "1592") + (data (i32.const 6388) "1593") + (data (i32.const 6392) "1594") + (data (i32.const 6396) "1595") + (data (i32.const 6400) "1596") + (data (i32.const 6404) "1597") + (data (i32.const 6408) "1598") + (data (i32.const 6412) "1599") + (data (i32.const 6416) "1600") + (data (i32.const 6420) "1601") + (data (i32.const 6424) "1602") + (data (i32.const 6428) "1603") + (data (i32.const 6432) "1604") + (data (i32.const 6436) "1605") + (data (i32.const 6440) "1606") + (data (i32.const 6444) "1607") + (data (i32.const 6448) "1608") + (data (i32.const 6452) "1609") + (data (i32.const 6456) "1610") + (data (i32.const 6460) "1611") + (data (i32.const 6464) "1612") + (data (i32.const 6468) "1613") + (data (i32.const 6472) "1614") + (data (i32.const 6476) "1615") + (data (i32.const 6480) "1616") + (data (i32.const 6484) "1617") + (data (i32.const 6488) "1618") + (data (i32.const 6492) "1619") + (data (i32.const 6496) "1620") + (data (i32.const 6500) "1621") + (data (i32.const 6504) "1622") + (data (i32.const 6508) "1623") + (data (i32.const 6512) "1624") + (data (i32.const 6516) "1625") + (data (i32.const 6520) "1626") + (data (i32.const 6524) "1627") + (data (i32.const 6528) "1628") + (data (i32.const 6532) "1629") + (data (i32.const 6536) "1630") + (data (i32.const 6540) "1631") + (data (i32.const 6544) "1632") + (data (i32.const 6548) "1633") + (data (i32.const 6552) "1634") + (data (i32.const 6556) "1635") + (data (i32.const 6560) "1636") + (data (i32.const 6564) "1637") + (data (i32.const 6568) "1638") + (data (i32.const 6572) "1639") + (data (i32.const 6576) "1640") + (data (i32.const 6580) "1641") + (data (i32.const 6584) "1642") + (data (i32.const 6588) "1643") + (data (i32.const 6592) "1644") + (data (i32.const 6596) "1645") + (data (i32.const 6600) "1646") + (data (i32.const 6604) "1647") + (data (i32.const 6608) "1648") + (data (i32.const 6612) "1649") + (data (i32.const 6616) "1650") + (data (i32.const 6620) "1651") + (data (i32.const 6624) "1652") + (data (i32.const 6628) "1653") + (data (i32.const 6632) "1654") + (data (i32.const 6636) "1655") + (data (i32.const 6640) "1656") + (data (i32.const 6644) "1657") + (data (i32.const 6648) "1658") + (data (i32.const 6652) "1659") + (data (i32.const 6656) "1660") + (data (i32.const 6660) "1661") + (data (i32.const 6664) "1662") + (data (i32.const 6668) "1663") + (data (i32.const 6672) "1664") + (data (i32.const 6676) "1665") + (data (i32.const 6680) "1666") + (data (i32.const 6684) "1667") + (data (i32.const 6688) "1668") + (data (i32.const 6692) "1669") + (data (i32.const 6696) "1670") + (data (i32.const 6700) "1671") + (data (i32.const 6704) "1672") + (data (i32.const 6708) "1673") + (data (i32.const 6712) "1674") + (data (i32.const 6716) "1675") + (data (i32.const 6720) "1676") + (data (i32.const 6724) "1677") + (data (i32.const 6728) "1678") + (data (i32.const 6732) "1679") + (data (i32.const 6736) "1680") + (data (i32.const 6740) "1681") + (data (i32.const 6744) "1682") + (data (i32.const 6748) "1683") + (data (i32.const 6752) "1684") + (data (i32.const 6756) "1685") + (data (i32.const 6760) "1686") + (data (i32.const 6764) "1687") + (data (i32.const 6768) "1688") + (data (i32.const 6772) "1689") + (data (i32.const 6776) "1690") + (data (i32.const 6780) "1691") + (data (i32.const 6784) "1692") + (data (i32.const 6788) "1693") + (data (i32.const 6792) "1694") + (data (i32.const 6796) "1695") + (data (i32.const 6800) "1696") + (data (i32.const 6804) "1697") + (data (i32.const 6808) "1698") + (data (i32.const 6812) "1699") + (data (i32.const 6816) "1700") + (data (i32.const 6820) "1701") + (data (i32.const 6824) "1702") + (data (i32.const 6828) "1703") + (data (i32.const 6832) "1704") + (data (i32.const 6836) "1705") + (data (i32.const 6840) "1706") + (data (i32.const 6844) "1707") + (data (i32.const 6848) "1708") + (data (i32.const 6852) "1709") + (data (i32.const 6856) "1710") + (data (i32.const 6860) "1711") + (data (i32.const 6864) "1712") + (data (i32.const 6868) "1713") + (data (i32.const 6872) "1714") + (data (i32.const 6876) "1715") + (data (i32.const 6880) "1716") + (data (i32.const 6884) "1717") + (data (i32.const 6888) "1718") + (data (i32.const 6892) "1719") + (data (i32.const 6896) "1720") + (data (i32.const 6900) "1721") + (data (i32.const 6904) "1722") + (data (i32.const 6908) "1723") + (data (i32.const 6912) "1724") + (data (i32.const 6916) "1725") + (data (i32.const 6920) "1726") + (data (i32.const 6924) "1727") + (data (i32.const 6928) "1728") + (data (i32.const 6932) "1729") + (data (i32.const 6936) "1730") + (data (i32.const 6940) "1731") + (data (i32.const 6944) "1732") + (data (i32.const 6948) "1733") + (data (i32.const 6952) "1734") + (data (i32.const 6956) "1735") + (data (i32.const 6960) "1736") + (data (i32.const 6964) "1737") + (data (i32.const 6968) "1738") + (data (i32.const 6972) "1739") + (data (i32.const 6976) "1740") + (data (i32.const 6980) "1741") + (data (i32.const 6984) "1742") + (data (i32.const 6988) "1743") + (data (i32.const 6992) "1744") + (data (i32.const 6996) "1745") + (data (i32.const 7000) "1746") + (data (i32.const 7004) "1747") + (data (i32.const 7008) "1748") + (data (i32.const 7012) "1749") + (data (i32.const 7016) "1750") + (data (i32.const 7020) "1751") + (data (i32.const 7024) "1752") + (data (i32.const 7028) "1753") + (data (i32.const 7032) "1754") + (data (i32.const 7036) "1755") + (data (i32.const 7040) "1756") + (data (i32.const 7044) "1757") + (data (i32.const 7048) "1758") + (data (i32.const 7052) "1759") + (data (i32.const 7056) "1760") + (data (i32.const 7060) "1761") + (data (i32.const 7064) "1762") + (data (i32.const 7068) "1763") + (data (i32.const 7072) "1764") + (data (i32.const 7076) "1765") + (data (i32.const 7080) "1766") + (data (i32.const 7084) "1767") + (data (i32.const 7088) "1768") + (data (i32.const 7092) "1769") + (data (i32.const 7096) "1770") + (data (i32.const 7100) "1771") + (data (i32.const 7104) "1772") + (data (i32.const 7108) "1773") + (data (i32.const 7112) "1774") + (data (i32.const 7116) "1775") + (data (i32.const 7120) "1776") + (data (i32.const 7124) "1777") + (data (i32.const 7128) "1778") + (data (i32.const 7132) "1779") + (data (i32.const 7136) "1780") + (data (i32.const 7140) "1781") + (data (i32.const 7144) "1782") + (data (i32.const 7148) "1783") + (data (i32.const 7152) "1784") + (data (i32.const 7156) "1785") + (data (i32.const 7160) "1786") + (data (i32.const 7164) "1787") + (data (i32.const 7168) "1788") + (data (i32.const 7172) "1789") + (data (i32.const 7176) "1790") + (data (i32.const 7180) "1791") + (data (i32.const 7184) "1792") + (data (i32.const 7188) "1793") + (data (i32.const 7192) "1794") + (data (i32.const 7196) "1795") + (data (i32.const 7200) "1796") + (data (i32.const 7204) "1797") + (data (i32.const 7208) "1798") + (data (i32.const 7212) "1799") + (data (i32.const 7216) "1800") + (data (i32.const 7220) "1801") + (data (i32.const 7224) "1802") + (data (i32.const 7228) "1803") + (data (i32.const 7232) "1804") + (data (i32.const 7236) "1805") + (data (i32.const 7240) "1806") + (data (i32.const 7244) "1807") + (data (i32.const 7248) "1808") + (data (i32.const 7252) "1809") + (data (i32.const 7256) "1810") + (data (i32.const 7260) "1811") + (data (i32.const 7264) "1812") + (data (i32.const 7268) "1813") + (data (i32.const 7272) "1814") + (data (i32.const 7276) "1815") + (data (i32.const 7280) "1816") + (data (i32.const 7284) "1817") + (data (i32.const 7288) "1818") + (data (i32.const 7292) "1819") + (data (i32.const 7296) "1820") + (data (i32.const 7300) "1821") + (data (i32.const 7304) "1822") + (data (i32.const 7308) "1823") + (data (i32.const 7312) "1824") + (data (i32.const 7316) "1825") + (data (i32.const 7320) "1826") + (data (i32.const 7324) "1827") + (data (i32.const 7328) "1828") + (data (i32.const 7332) "1829") + (data (i32.const 7336) "1830") + (data (i32.const 7340) "1831") + (data (i32.const 7344) "1832") + (data (i32.const 7348) "1833") + (data (i32.const 7352) "1834") + (data (i32.const 7356) "1835") + (data (i32.const 7360) "1836") + (data (i32.const 7364) "1837") + (data (i32.const 7368) "1838") + (data (i32.const 7372) "1839") + (data (i32.const 7376) "1840") + (data (i32.const 7380) "1841") + (data (i32.const 7384) "1842") + (data (i32.const 7388) "1843") + (data (i32.const 7392) "1844") + (data (i32.const 7396) "1845") + (data (i32.const 7400) "1846") + (data (i32.const 7404) "1847") + (data (i32.const 7408) "1848") + (data (i32.const 7412) "1849") + (data (i32.const 7416) "1850") + (data (i32.const 7420) "1851") + (data (i32.const 7424) "1852") + (data (i32.const 7428) "1853") + (data (i32.const 7432) "1854") + (data (i32.const 7436) "1855") + (data (i32.const 7440) "1856") + (data (i32.const 7444) "1857") + (data (i32.const 7448) "1858") + (data (i32.const 7452) "1859") + (data (i32.const 7456) "1860") + (data (i32.const 7460) "1861") + (data (i32.const 7464) "1862") + (data (i32.const 7468) "1863") + (data (i32.const 7472) "1864") + (data (i32.const 7476) "1865") + (data (i32.const 7480) "1866") + (data (i32.const 7484) "1867") + (data (i32.const 7488) "1868") + (data (i32.const 7492) "1869") + (data (i32.const 7496) "1870") + (data (i32.const 7500) "1871") + (data (i32.const 7504) "1872") + (data (i32.const 7508) "1873") + (data (i32.const 7512) "1874") + (data (i32.const 7516) "1875") + (data (i32.const 7520) "1876") + (data (i32.const 7524) "1877") + (data (i32.const 7528) "1878") + (data (i32.const 7532) "1879") + (data (i32.const 7536) "1880") + (data (i32.const 7540) "1881") + (data (i32.const 7544) "1882") + (data (i32.const 7548) "1883") + (data (i32.const 7552) "1884") + (data (i32.const 7556) "1885") + (data (i32.const 7560) "1886") + (data (i32.const 7564) "1887") + (data (i32.const 7568) "1888") + (data (i32.const 7572) "1889") + (data (i32.const 7576) "1890") + (data (i32.const 7580) "1891") + (data (i32.const 7584) "1892") + (data (i32.const 7588) "1893") + (data (i32.const 7592) "1894") + (data (i32.const 7596) "1895") + (data (i32.const 7600) "1896") + (data (i32.const 7604) "1897") + (data (i32.const 7608) "1898") + (data (i32.const 7612) "1899") + (data (i32.const 7616) "1900") + (data (i32.const 7620) "1901") + (data (i32.const 7624) "1902") + (data (i32.const 7628) "1903") + (data (i32.const 7632) "1904") + (data (i32.const 7636) "1905") + (data (i32.const 7640) "1906") + (data (i32.const 7644) "1907") + (data (i32.const 7648) "1908") + (data (i32.const 7652) "1909") + (data (i32.const 7656) "1910") + (data (i32.const 7660) "1911") + (data (i32.const 7664) "1912") + (data (i32.const 7668) "1913") + (data (i32.const 7672) "1914") + (data (i32.const 7676) "1915") + (data (i32.const 7680) "1916") + (data (i32.const 7684) "1917") + (data (i32.const 7688) "1918") + (data (i32.const 7692) "1919") + (data (i32.const 7696) "1920") + (data (i32.const 7700) "1921") + (data (i32.const 7704) "1922") + (data (i32.const 7708) "1923") + (data (i32.const 7712) "1924") + (data (i32.const 7716) "1925") + (data (i32.const 7720) "1926") + (data (i32.const 7724) "1927") + (data (i32.const 7728) "1928") + (data (i32.const 7732) "1929") + (data (i32.const 7736) "1930") + (data (i32.const 7740) "1931") + (data (i32.const 7744) "1932") + (data (i32.const 7748) "1933") + (data (i32.const 7752) "1934") + (data (i32.const 7756) "1935") + (data (i32.const 7760) "1936") + (data (i32.const 7764) "1937") + (data (i32.const 7768) "1938") + (data (i32.const 7772) "1939") + (data (i32.const 7776) "1940") + (data (i32.const 7780) "1941") + (data (i32.const 7784) "1942") + (data (i32.const 7788) "1943") + (data (i32.const 7792) "1944") + (data (i32.const 7796) "1945") + (data (i32.const 7800) "1946") + (data (i32.const 7804) "1947") + (data (i32.const 7808) "1948") + (data (i32.const 7812) "1949") + (data (i32.const 7816) "1950") + (data (i32.const 7820) "1951") + (data (i32.const 7824) "1952") + (data (i32.const 7828) "1953") + (data (i32.const 7832) "1954") + (data (i32.const 7836) "1955") + (data (i32.const 7840) "1956") + (data (i32.const 7844) "1957") + (data (i32.const 7848) "1958") + (data (i32.const 7852) "1959") + (data (i32.const 7856) "1960") + (data (i32.const 7860) "1961") + (data (i32.const 7864) "1962") + (data (i32.const 7868) "1963") + (data (i32.const 7872) "1964") + (data (i32.const 7876) "1965") + (data (i32.const 7880) "1966") + (data (i32.const 7884) "1967") + (data (i32.const 7888) "1968") + (data (i32.const 7892) "1969") + (data (i32.const 7896) "1970") + (data (i32.const 7900) "1971") + (data (i32.const 7904) "1972") + (data (i32.const 7908) "1973") + (data (i32.const 7912) "1974") + (data (i32.const 7916) "1975") + (data (i32.const 7920) "1976") + (data (i32.const 7924) "1977") + (data (i32.const 7928) "1978") + (data (i32.const 7932) "1979") + (data (i32.const 7936) "1980") + (data (i32.const 7940) "1981") + (data (i32.const 7944) "1982") + (data (i32.const 7948) "1983") + (data (i32.const 7952) "1984") + (data (i32.const 7956) "1985") + (data (i32.const 7960) "1986") + (data (i32.const 7964) "1987") + (data (i32.const 7968) "1988") + (data (i32.const 7972) "1989") + (data (i32.const 7976) "1990") + (data (i32.const 7980) "1991") + (data (i32.const 7984) "1992") + (data (i32.const 7988) "1993") + (data (i32.const 7992) "1994") + (data (i32.const 7996) "1995") + (data (i32.const 8000) "1996") + (data (i32.const 8004) "1997") + (data (i32.const 8008) "1998") + (data (i32.const 8012) "1999") + (data (i32.const 8016) "2000") + (data (i32.const 8020) "2001") + (data (i32.const 8024) "2002") + (data (i32.const 8028) "2003") + (data (i32.const 8032) "2004") + (data (i32.const 8036) "2005") + (data (i32.const 8040) "2006") + (data (i32.const 8044) "2007") + (data (i32.const 8048) "2008") + (data (i32.const 8052) "2009") + (data (i32.const 8056) "2010") + (data (i32.const 8060) "2011") + (data (i32.const 8064) "2012") + (data (i32.const 8068) "2013") + (data (i32.const 8072) "2014") + (data (i32.const 8076) "2015") + (data (i32.const 8080) "2016") + (data (i32.const 8084) "2017") + (data (i32.const 8088) "2018") + (data (i32.const 8092) "2019") + (data (i32.const 8096) "2020") + (data (i32.const 8100) "2021") + (data (i32.const 8104) "2022") + (data (i32.const 8108) "2023") + (data (i32.const 8112) "2024") + (data (i32.const 8116) "2025") + (data (i32.const 8120) "2026") + (data (i32.const 8124) "2027") + (data (i32.const 8128) "2028") + (data (i32.const 8132) "2029") + (data (i32.const 8136) "2030") + (data (i32.const 8140) "2031") + (data (i32.const 8144) "2032") + (data (i32.const 8148) "2033") + (data (i32.const 8152) "2034") + (data (i32.const 8156) "2035") + (data (i32.const 8160) "2036") + (data (i32.const 8164) "2037") + (data (i32.const 8168) "2038") + (data (i32.const 8172) "2039") + (data (i32.const 8176) "2040") + (data (i32.const 8180) "2041") + (data (i32.const 8184) "2042") + (data (i32.const 8188) "2043") + (data (i32.const 8192) "2044") + (data (i32.const 8196) "2045") + (data (i32.const 8200) "2046") + (data (i32.const 8204) "2047") + (data (i32.const 8208) "2048") + (data (i32.const 8212) "2049") + (data (i32.const 8216) "2050") + (data (i32.const 8220) "2051") + (data (i32.const 8224) "2052") + (data (i32.const 8228) "2053") + (data (i32.const 8232) "2054") + (data (i32.const 8236) "2055") + (data (i32.const 8240) "2056") + (data (i32.const 8244) "2057") + (data (i32.const 8248) "2058") + (data (i32.const 8252) "2059") + (data (i32.const 8256) "2060") + (data (i32.const 8260) "2061") + (data (i32.const 8264) "2062") + (data (i32.const 8268) "2063") + (data (i32.const 8272) "2064") + (data (i32.const 8276) "2065") + (data (i32.const 8280) "2066") + (data (i32.const 8284) "2067") + (data (i32.const 8288) "2068") + (data (i32.const 8292) "2069") + (data (i32.const 8296) "2070") + (data (i32.const 8300) "2071") + (data (i32.const 8304) "2072") + (data (i32.const 8308) "2073") + (data (i32.const 8312) "2074") + (data (i32.const 8316) "2075") + (data (i32.const 8320) "2076") + (data (i32.const 8324) "2077") + (data (i32.const 8328) "2078") + (data (i32.const 8332) "2079") + (data (i32.const 8336) "2080") + (data (i32.const 8340) "2081") + (data (i32.const 8344) "2082") + (data (i32.const 8348) "2083") + (data (i32.const 8352) "2084") + (data (i32.const 8356) "2085") + (data (i32.const 8360) "2086") + (data (i32.const 8364) "2087") + (data (i32.const 8368) "2088") + (data (i32.const 8372) "2089") + (data (i32.const 8376) "2090") + (data (i32.const 8380) "2091") + (data (i32.const 8384) "2092") + (data (i32.const 8388) "2093") + (data (i32.const 8392) "2094") + (data (i32.const 8396) "2095") + (data (i32.const 8400) "2096") + (data (i32.const 8404) "2097") + (data (i32.const 8408) "2098") + (data (i32.const 8412) "2099") + (data (i32.const 8416) "2100") + (data (i32.const 8420) "2101") + (data (i32.const 8424) "2102") + (data (i32.const 8428) "2103") + (data (i32.const 8432) "2104") + (data (i32.const 8436) "2105") + (data (i32.const 8440) "2106") + (data (i32.const 8444) "2107") + (data (i32.const 8448) "2108") + (data (i32.const 8452) "2109") + (data (i32.const 8456) "2110") + (data (i32.const 8460) "2111") + (data (i32.const 8464) "2112") + (data (i32.const 8468) "2113") + (data (i32.const 8472) "2114") + (data (i32.const 8476) "2115") + (data (i32.const 8480) "2116") + (data (i32.const 8484) "2117") + (data (i32.const 8488) "2118") + (data (i32.const 8492) "2119") + (data (i32.const 8496) "2120") + (data (i32.const 8500) "2121") + (data (i32.const 8504) "2122") + (data (i32.const 8508) "2123") + (data (i32.const 8512) "2124") + (data (i32.const 8516) "2125") + (data (i32.const 8520) "2126") + (data (i32.const 8524) "2127") + (data (i32.const 8528) "2128") + (data (i32.const 8532) "2129") + (data (i32.const 8536) "2130") + (data (i32.const 8540) "2131") + (data (i32.const 8544) "2132") + (data (i32.const 8548) "2133") + (data (i32.const 8552) "2134") + (data (i32.const 8556) "2135") + (data (i32.const 8560) "2136") + (data (i32.const 8564) "2137") + (data (i32.const 8568) "2138") + (data (i32.const 8572) "2139") + (data (i32.const 8576) "2140") + (data (i32.const 8580) "2141") + (data (i32.const 8584) "2142") + (data (i32.const 8588) "2143") + (data (i32.const 8592) "2144") + (data (i32.const 8596) "2145") + (data (i32.const 8600) "2146") + (data (i32.const 8604) "2147") + (data (i32.const 8608) "2148") + (data (i32.const 8612) "2149") + (data (i32.const 8616) "2150") + (data (i32.const 8620) "2151") + (data (i32.const 8624) "2152") + (data (i32.const 8628) "2153") + (data (i32.const 8632) "2154") + (data (i32.const 8636) "2155") + (data (i32.const 8640) "2156") + (data (i32.const 8644) "2157") + (data (i32.const 8648) "2158") + (data (i32.const 8652) "2159") + (data (i32.const 8656) "2160") + (data (i32.const 8660) "2161") + (data (i32.const 8664) "2162") + (data (i32.const 8668) "2163") + (data (i32.const 8672) "2164") + (data (i32.const 8676) "2165") + (data (i32.const 8680) "2166") + (data (i32.const 8684) "2167") + (data (i32.const 8688) "2168") + (data (i32.const 8692) "2169") + (data (i32.const 8696) "2170") + (data (i32.const 8700) "2171") + (data (i32.const 8704) "2172") + (data (i32.const 8708) "2173") + (data (i32.const 8712) "2174") + (data (i32.const 8716) "2175") + (data (i32.const 8720) "2176") + (data (i32.const 8724) "2177") + (data (i32.const 8728) "2178") + (data (i32.const 8732) "2179") + (data (i32.const 8736) "2180") + (data (i32.const 8740) "2181") + (data (i32.const 8744) "2182") + (data (i32.const 8748) "2183") + (data (i32.const 8752) "2184") + (data (i32.const 8756) "2185") + (data (i32.const 8760) "2186") + (data (i32.const 8764) "2187") + (data (i32.const 8768) "2188") + (data (i32.const 8772) "2189") + (data (i32.const 8776) "2190") + (data (i32.const 8780) "2191") + (data (i32.const 8784) "2192") + (data (i32.const 8788) "2193") + (data (i32.const 8792) "2194") + (data (i32.const 8796) "2195") + (data (i32.const 8800) "2196") + (data (i32.const 8804) "2197") + (data (i32.const 8808) "2198") + (data (i32.const 8812) "2199") + (data (i32.const 8816) "2200") + (data (i32.const 8820) "2201") + (data (i32.const 8824) "2202") + (data (i32.const 8828) "2203") + (data (i32.const 8832) "2204") + (data (i32.const 8836) "2205") + (data (i32.const 8840) "2206") + (data (i32.const 8844) "2207") + (data (i32.const 8848) "2208") + (data (i32.const 8852) "2209") + (data (i32.const 8856) "2210") + (data (i32.const 8860) "2211") + (data (i32.const 8864) "2212") + (data (i32.const 8868) "2213") + (data (i32.const 8872) "2214") + (data (i32.const 8876) "2215") + (data (i32.const 8880) "2216") + (data (i32.const 8884) "2217") + (data (i32.const 8888) "2218") + (data (i32.const 8892) "2219") + (data (i32.const 8896) "2220") + (data (i32.const 8900) "2221") + (data (i32.const 8904) "2222") + (data (i32.const 8908) "2223") + (data (i32.const 8912) "2224") + (data (i32.const 8916) "2225") + (data (i32.const 8920) "2226") + (data (i32.const 8924) "2227") + (data (i32.const 8928) "2228") + (data (i32.const 8932) "2229") + (data (i32.const 8936) "2230") + (data (i32.const 8940) "2231") + (data (i32.const 8944) "2232") + (data (i32.const 8948) "2233") + (data (i32.const 8952) "2234") + (data (i32.const 8956) "2235") + (data (i32.const 8960) "2236") + (data (i32.const 8964) "2237") + (data (i32.const 8968) "2238") + (data (i32.const 8972) "2239") + (data (i32.const 8976) "2240") + (data (i32.const 8980) "2241") + (data (i32.const 8984) "2242") + (data (i32.const 8988) "2243") + (data (i32.const 8992) "2244") + (data (i32.const 8996) "2245") + (data (i32.const 9000) "2246") + (data (i32.const 9004) "2247") + (data (i32.const 9008) "2248") + (data (i32.const 9012) "2249") + (data (i32.const 9016) "2250") + (data (i32.const 9020) "2251") + (data (i32.const 9024) "2252") + (data (i32.const 9028) "2253") + (data (i32.const 9032) "2254") + (data (i32.const 9036) "2255") + (data (i32.const 9040) "2256") + (data (i32.const 9044) "2257") + (data (i32.const 9048) "2258") + (data (i32.const 9052) "2259") + (data (i32.const 9056) "2260") + (data (i32.const 9060) "2261") + (data (i32.const 9064) "2262") + (data (i32.const 9068) "2263") + (data (i32.const 9072) "2264") + (data (i32.const 9076) "2265") + (data (i32.const 9080) "2266") + (data (i32.const 9084) "2267") + (data (i32.const 9088) "2268") + (data (i32.const 9092) "2269") + (data (i32.const 9096) "2270") + (data (i32.const 9100) "2271") + (data (i32.const 9104) "2272") + (data (i32.const 9108) "2273") + (data (i32.const 9112) "2274") + (data (i32.const 9116) "2275") + (data (i32.const 9120) "2276") + (data (i32.const 9124) "2277") + (data (i32.const 9128) "2278") + (data (i32.const 9132) "2279") + (data (i32.const 9136) "2280") + (data (i32.const 9140) "2281") + (data (i32.const 9144) "2282") + (data (i32.const 9148) "2283") + (data (i32.const 9152) "2284") + (data (i32.const 9156) "2285") + (data (i32.const 9160) "2286") + (data (i32.const 9164) "2287") + (data (i32.const 9168) "2288") + (data (i32.const 9172) "2289") + (data (i32.const 9176) "2290") + (data (i32.const 9180) "2291") + (data (i32.const 9184) "2292") + (data (i32.const 9188) "2293") + (data (i32.const 9192) "2294") + (data (i32.const 9196) "2295") + (data (i32.const 9200) "2296") + (data (i32.const 9204) "2297") + (data (i32.const 9208) "2298") + (data (i32.const 9212) "2299") + (data (i32.const 9216) "2300") + (data (i32.const 9220) "2301") + (data (i32.const 9224) "2302") + (data (i32.const 9228) "2303") + (data (i32.const 9232) "2304") + (data (i32.const 9236) "2305") + (data (i32.const 9240) "2306") + (data (i32.const 9244) "2307") + (data (i32.const 9248) "2308") + (data (i32.const 9252) "2309") + (data (i32.const 9256) "2310") + (data (i32.const 9260) "2311") + (data (i32.const 9264) "2312") + (data (i32.const 9268) "2313") + (data (i32.const 9272) "2314") + (data (i32.const 9276) "2315") + (data (i32.const 9280) "2316") + (data (i32.const 9284) "2317") + (data (i32.const 9288) "2318") + (data (i32.const 9292) "2319") + (data (i32.const 9296) "2320") + (data (i32.const 9300) "2321") + (data (i32.const 9304) "2322") + (data (i32.const 9308) "2323") + (data (i32.const 9312) "2324") + (data (i32.const 9316) "2325") + (data (i32.const 9320) "2326") + (data (i32.const 9324) "2327") + (data (i32.const 9328) "2328") + (data (i32.const 9332) "2329") + (data (i32.const 9336) "2330") + (data (i32.const 9340) "2331") + (data (i32.const 9344) "2332") + (data (i32.const 9348) "2333") + (data (i32.const 9352) "2334") + (data (i32.const 9356) "2335") + (data (i32.const 9360) "2336") + (data (i32.const 9364) "2337") + (data (i32.const 9368) "2338") + (data (i32.const 9372) "2339") + (data (i32.const 9376) "2340") + (data (i32.const 9380) "2341") + (data (i32.const 9384) "2342") + (data (i32.const 9388) "2343") + (data (i32.const 9392) "2344") + (data (i32.const 9396) "2345") + (data (i32.const 9400) "2346") + (data (i32.const 9404) "2347") + (data (i32.const 9408) "2348") + (data (i32.const 9412) "2349") + (data (i32.const 9416) "2350") + (data (i32.const 9420) "2351") + (data (i32.const 9424) "2352") + (data (i32.const 9428) "2353") + (data (i32.const 9432) "2354") + (data (i32.const 9436) "2355") + (data (i32.const 9440) "2356") + (data (i32.const 9444) "2357") + (data (i32.const 9448) "2358") + (data (i32.const 9452) "2359") + (data (i32.const 9456) "2360") + (data (i32.const 9460) "2361") + (data (i32.const 9464) "2362") + (data (i32.const 9468) "2363") + (data (i32.const 9472) "2364") + (data (i32.const 9476) "2365") + (data (i32.const 9480) "2366") + (data (i32.const 9484) "2367") + (data (i32.const 9488) "2368") + (data (i32.const 9492) "2369") + (data (i32.const 9496) "2370") + (data (i32.const 9500) "2371") + (data (i32.const 9504) "2372") + (data (i32.const 9508) "2373") + (data (i32.const 9512) "2374") + (data (i32.const 9516) "2375") + (data (i32.const 9520) "2376") + (data (i32.const 9524) "2377") + (data (i32.const 9528) "2378") + (data (i32.const 9532) "2379") + (data (i32.const 9536) "2380") + (data (i32.const 9540) "2381") + (data (i32.const 9544) "2382") + (data (i32.const 9548) "2383") + (data (i32.const 9552) "2384") + (data (i32.const 9556) "2385") + (data (i32.const 9560) "2386") + (data (i32.const 9564) "2387") + (data (i32.const 9568) "2388") + (data (i32.const 9572) "2389") + (data (i32.const 9576) "2390") + (data (i32.const 9580) "2391") + (data (i32.const 9584) "2392") + (data (i32.const 9588) "2393") + (data (i32.const 9592) "2394") + (data (i32.const 9596) "2395") + (data (i32.const 9600) "2396") + (data (i32.const 9604) "2397") + (data (i32.const 9608) "2398") + (data (i32.const 9612) "2399") + (data (i32.const 9616) "2400") + (export "feq" (func $feq)) + (export "fne" (func $fne)) + (export "fgt" (func $fgt)) + (export "flt" (func $flt)) + (export "fge" (func $fge)) + (export "fle" (func $fle)) + (export "apply" (func $apply)) + (export "assert_return" (func $assert_return)) + (func $assert_return (param $0 i32) (param $1 i32 ) (param $2 i32) (call $eosio_assert(i32.eq (get_local $0) (get_local $1)) (get_local $2))) + (func $feq (param $0 f32) (param $1 f32) (result i32) (f32.eq (get_local $0) (get_local $1))) + (func $fne (param $0 f32) (param $1 f32) (result i32) (f32.ne (get_local $0) (get_local $1))) + (func $fgt (param $0 f32) (param $1 f32) (result i32) (f32.gt (get_local $0) (get_local $1))) + (func $flt (param $0 f32) (param $1 f32) (result i32) (f32.lt (get_local $0) (get_local $1))) + (func $fge (param $0 f32) (param $1 f32) (result i32) (f32.ge (get_local $0) (get_local $1))) + (func $fle (param $0 f32) (param $1 f32) (result i32) (f32.le (get_local $0) (get_local $1))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 20)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 24)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 28)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 32)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 36)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 40)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 44)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 48)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 52)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 56)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 60)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 64)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 68)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 72)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 76)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 80)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 84)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 88)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 92)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 96)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 100)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 104)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 108)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 112)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 116)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 120)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 124)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 128)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -inf)) (i32.const 0) (i32.const 132)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const inf)) (i32.const 0) (i32.const 136)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -inf)) (i32.const 0) (i32.const 140)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const inf)) (i32.const 0) (i32.const 144)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 148)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 152)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 156)) + (call $assert_return (call $feq (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 160)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 164)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 168)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 172)) + (call $assert_return (call $feq (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 176)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0) (i32.const 180)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0) (i32.const 184)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0) (i32.const 188)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0) (i32.const 192)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1) (i32.const 196)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0) (i32.const 200)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0) (i32.const 204)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1) (i32.const 208)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0) (i32.const 212)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0) (i32.const 216)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0) (i32.const 220)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0) (i32.const 224)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0) (i32.const 228)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0) (i32.const 232)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0) (i32.const 236)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0) (i32.const 240)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0) (i32.const 244)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0) (i32.const 248)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0) (i32.const 252)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0) (i32.const 256)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 260)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 264)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 268)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 272)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 276)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 280)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 284)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 288)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -inf)) (i32.const 0) (i32.const 292)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const inf)) (i32.const 0) (i32.const 296)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -inf)) (i32.const 0) (i32.const 300)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const inf)) (i32.const 0) (i32.const 304)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 308)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 312)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 316)) + (call $assert_return (call $feq (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 320)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 324)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 328)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 332)) + (call $assert_return (call $feq (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 336)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0) (i32.const 340)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0) (i32.const 344)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0) (i32.const 348)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0) (i32.const 352)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0) (i32.const 356)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0) (i32.const 360)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0) (i32.const 364)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0) (i32.const 368)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1) (i32.const 372)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0) (i32.const 376)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0) (i32.const 380)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1) (i32.const 384)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0) (i32.const 388)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0) (i32.const 392)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0) (i32.const 396)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0) (i32.const 400)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0) (i32.const 404)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0) (i32.const 408)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0) (i32.const 412)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0) (i32.const 416)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 420)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 424)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 428)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 432)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 436)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 440)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 444)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 448)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -inf)) (i32.const 0) (i32.const 452)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const inf)) (i32.const 0) (i32.const 456)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -inf)) (i32.const 0) (i32.const 460)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const inf)) (i32.const 0) (i32.const 464)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 468)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 472)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 476)) + (call $assert_return (call $feq (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 480)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 484)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 488)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 492)) + (call $assert_return (call $feq (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 496)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0) (i32.const 500)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0) (i32.const 504)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0) (i32.const 508)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0) (i32.const 512)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0) (i32.const 516)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0) (i32.const 520)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0) (i32.const 524)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0) (i32.const 528)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0) (i32.const 532)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0) (i32.const 536)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0) (i32.const 540)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0) (i32.const 544)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1) (i32.const 548)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0) (i32.const 552)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0) (i32.const 556)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1) (i32.const 560)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0) (i32.const 564)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0) (i32.const 568)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0) (i32.const 572)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0) (i32.const 576)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 580)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 584)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 588)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 592)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 596)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 600)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 604)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 608)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -inf)) (i32.const 0) (i32.const 612)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const inf)) (i32.const 0) (i32.const 616)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -inf)) (i32.const 0) (i32.const 620)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const inf)) (i32.const 0) (i32.const 624)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 628)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 632)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 636)) + (call $assert_return (call $feq (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 640)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 644)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 648)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 652)) + (call $assert_return (call $feq (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 656)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 660)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 664)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 668)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 672)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 676)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 680)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 684)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 688)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 692)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 696)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 700)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 704)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 708)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 712)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 716)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 720)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 724)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 728)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 732)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 736)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 740)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 744)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 748)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 752)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 756)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 760)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 764)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 768)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -inf)) (i32.const 0) (i32.const 772)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const inf)) (i32.const 0) (i32.const 776)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -inf)) (i32.const 0) (i32.const 780)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const inf)) (i32.const 0) (i32.const 784)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 788)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 792)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 796)) + (call $assert_return (call $feq (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 800)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 804)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 808)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 812)) + (call $assert_return (call $feq (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 816)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0) (i32.const 820)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0) (i32.const 824)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0) (i32.const 828)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0) (i32.const 832)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0) (i32.const 836)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0) (i32.const 840)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0) (i32.const 844)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0) (i32.const 848)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0) (i32.const 852)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0) (i32.const 856)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0) (i32.const 860)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0) (i32.const 864)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0) (i32.const 868)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0) (i32.const 872)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0) (i32.const 876)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0) (i32.const 880)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0) (i32.const 884)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0) (i32.const 888)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0) (i32.const 892)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0) (i32.const 896)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 900)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 904)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 908)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 912)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 916)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 920)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 924)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 928)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 0) (i32.const 932)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 0) (i32.const 936)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 0) (i32.const 940)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 0) (i32.const 944)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 948)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 952)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 956)) + (call $assert_return (call $feq (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 960)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 964)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 968)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 972)) + (call $assert_return (call $feq (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 976)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0) (i32.const 980)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0) (i32.const 984)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0) (i32.const 988)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0) (i32.const 992)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0) (i32.const 996)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1000)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1004)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1008)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1012)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1016)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1020)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1024)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1028)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1032)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1036)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1040)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1044)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1048)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1052)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1056)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1060)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1064)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1068)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1072)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 1076)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1080)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1084)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 1088)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 0) (i32.const 1092)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 0) (i32.const 1096)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 0) (i32.const 1100)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 0) (i32.const 1104)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 1108)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1112)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 1116)) + (call $assert_return (call $feq (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1120)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 1124)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1128)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 1132)) + (call $assert_return (call $feq (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1136)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1140)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1144)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1148)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1152)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1156)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1160)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1164)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1168)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1172)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1176)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1180)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1184)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1188)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1192)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1196)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1200)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1204)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1208)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1212)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1216)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1220)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1224)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1228)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1232)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1236)) + (call $assert_return (call $feq (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1240)) + (call $assert_return (call $feq (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1244)) + (call $assert_return (call $feq (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1248)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -inf)) (i32.const 1) (i32.const 1252)) + (call $assert_return (call $feq (f32.const -inf) (f32.const inf)) (i32.const 0) (i32.const 1256)) + (call $assert_return (call $feq (f32.const inf) (f32.const -inf)) (i32.const 0) (i32.const 1260)) + (call $assert_return (call $feq (f32.const inf) (f32.const inf)) (i32.const 1) (i32.const 1264)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -nan)) (i32.const 0) (i32.const 1268)) + (call $assert_return (call $feq (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1272)) + (call $assert_return (call $feq (f32.const -inf) (f32.const nan)) (i32.const 0) (i32.const 1276)) + (call $assert_return (call $feq (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1280)) + (call $assert_return (call $feq (f32.const inf) (f32.const -nan)) (i32.const 0) (i32.const 1284)) + (call $assert_return (call $feq (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1288)) + (call $assert_return (call $feq (f32.const inf) (f32.const nan)) (i32.const 0) (i32.const 1292)) + (call $assert_return (call $feq (f32.const inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1296)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1300)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1304)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1308)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1312)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1316)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1320)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1324)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1328)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1332)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1336)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1340)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1344)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1348)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1352)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1356)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1360)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1364)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1368)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1372)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1376)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1380)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1384)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1388)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1392)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1396)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1400)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1404)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1408)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1412)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 1416)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1420)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 1424)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1428)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1432)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1436)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1440)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1444)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 1448)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1452)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 1456)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1460)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1464)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1468)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1472)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1476)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 1480)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1484)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 1488)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1492)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1496)) + (call $assert_return (call $feq (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1500)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1504)) + (call $assert_return (call $feq (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1508)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 1512)) + (call $assert_return (call $feq (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1516)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 1520)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -inf)) (i32.const 0) (i32.const 1524)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 1528)) + (call $assert_return (call $feq (f32.const -nan) (f32.const inf)) (i32.const 0) (i32.const 1532)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 1536)) + (call $assert_return (call $feq (f32.const nan) (f32.const -inf)) (i32.const 0) (i32.const 1540)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 1544)) + (call $assert_return (call $feq (f32.const nan) (f32.const inf)) (i32.const 0) (i32.const 1548)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 1552)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -nan)) (i32.const 0) (i32.const 1556)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 1560)) + (call $assert_return (call $feq (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1564)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1568)) + (call $assert_return (call $feq (f32.const -nan) (f32.const nan)) (i32.const 0) (i32.const 1572)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 1576)) + (call $assert_return (call $feq (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1580)) + (call $assert_return (call $feq (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1584)) + (call $assert_return (call $feq (f32.const nan) (f32.const -nan)) (i32.const 0) (i32.const 1588)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 1592)) + (call $assert_return (call $feq (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1596)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 1600)) + (call $assert_return (call $feq (f32.const nan) (f32.const nan)) (i32.const 0) (i32.const 1604)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 1608)) + (call $assert_return (call $feq (f32.const nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1612)) + (call $assert_return (call $feq (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 1616)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1620)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1624)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 1628)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 1632)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 1636)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 1640)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 1644)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 1648)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 1652)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 1656)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 1660)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 1664)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 1668)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 1672)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 1676)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 1680)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 1684)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 1688)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 1692)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 1696)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 1700)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 1704)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 1708)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 1712)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 1716)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 1720)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 1724)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 1728)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -inf)) (i32.const 1) (i32.const 1732)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const inf)) (i32.const 1) (i32.const 1736)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -inf)) (i32.const 1) (i32.const 1740)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const inf)) (i32.const 1) (i32.const 1744)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -nan)) (i32.const 1) (i32.const 1748)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 1752)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const nan)) (i32.const 1) (i32.const 1756)) + (call $assert_return (call $fne (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 1) (i32.const 1760)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -nan)) (i32.const 1) (i32.const 1764)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 1768)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const nan)) (i32.const 1) (i32.const 1772)) + (call $assert_return (call $fne (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 1) (i32.const 1776)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1) (i32.const 1780)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1) (i32.const 1784)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1) (i32.const 1788)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1) (i32.const 1792)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0) (i32.const 1796)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1) (i32.const 1800)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1) (i32.const 1804)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0) (i32.const 1808)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1) (i32.const 1812)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1) (i32.const 1816)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1) (i32.const 1820)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1) (i32.const 1824)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1) (i32.const 1828)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1) (i32.const 1832)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1) (i32.const 1836)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1) (i32.const 1840)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1) (i32.const 1844)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1) (i32.const 1848)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1) (i32.const 1852)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1) (i32.const 1856)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 1860)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 1864)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 1868)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 1872)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 1876)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 1880)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 1884)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 1888)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -inf)) (i32.const 1) (i32.const 1892)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const inf)) (i32.const 1) (i32.const 1896)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -inf)) (i32.const 1) (i32.const 1900)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const inf)) (i32.const 1) (i32.const 1904)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -nan)) (i32.const 1) (i32.const 1908)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 1912)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const nan)) (i32.const 1) (i32.const 1916)) + (call $assert_return (call $fne (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 1) (i32.const 1920)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -nan)) (i32.const 1) (i32.const 1924)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 1928)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const nan)) (i32.const 1) (i32.const 1932)) + (call $assert_return (call $fne (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 1) (i32.const 1936)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1) (i32.const 1940)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1) (i32.const 1944)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1) (i32.const 1948)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1) (i32.const 1952)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1) (i32.const 1956)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1) (i32.const 1960)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1) (i32.const 1964)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1) (i32.const 1968)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0) (i32.const 1972)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1) (i32.const 1976)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1) (i32.const 1980)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0) (i32.const 1984)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1) (i32.const 1988)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1) (i32.const 1992)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1) (i32.const 1996)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2000)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2004)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2008)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2012)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2016)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2020)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2024)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2028)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2032)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2036)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2040)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2044)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2048)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -inf)) (i32.const 1) (i32.const 2052)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const inf)) (i32.const 1) (i32.const 2056)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -inf)) (i32.const 1) (i32.const 2060)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const inf)) (i32.const 1) (i32.const 2064)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -nan)) (i32.const 1) (i32.const 2068)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2072)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const nan)) (i32.const 1) (i32.const 2076)) + (call $assert_return (call $fne (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2080)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -nan)) (i32.const 1) (i32.const 2084)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2088)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const nan)) (i32.const 1) (i32.const 2092)) + (call $assert_return (call $fne (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2096)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2100)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2104)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2108)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2112)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2116)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2120)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2124)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2128)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2132)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2136)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2140)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2144)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0) (i32.const 2148)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2152)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2156)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0) (i32.const 2160)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2164)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2168)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2172)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2176)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2180)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2184)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2188)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2192)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2196)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2200)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2204)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2208)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -inf)) (i32.const 1) (i32.const 2212)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const inf)) (i32.const 1) (i32.const 2216)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -inf)) (i32.const 1) (i32.const 2220)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const inf)) (i32.const 1) (i32.const 2224)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -nan)) (i32.const 1) (i32.const 2228)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2232)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const nan)) (i32.const 1) (i32.const 2236)) + (call $assert_return (call $fne (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2240)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -nan)) (i32.const 1) (i32.const 2244)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2248)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const nan)) (i32.const 1) (i32.const 2252)) + (call $assert_return (call $fne (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2256)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2260)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2264)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2268)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2272)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2276)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2280)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2284)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2288)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2292)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2296)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2300)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2304)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2308)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2312)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2316)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2320)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 2324)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2328)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2332)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 2336)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2340)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2344)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2348)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2352)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2356)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2360)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2364)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2368)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -inf)) (i32.const 1) (i32.const 2372)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const inf)) (i32.const 1) (i32.const 2376)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -inf)) (i32.const 1) (i32.const 2380)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const inf)) (i32.const 1) (i32.const 2384)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -nan)) (i32.const 1) (i32.const 2388)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2392)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const nan)) (i32.const 1) (i32.const 2396)) + (call $assert_return (call $fne (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2400)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -nan)) (i32.const 1) (i32.const 2404)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2408)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const nan)) (i32.const 1) (i32.const 2412)) + (call $assert_return (call $fne (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2416)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2420)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2424)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2428)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2432)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2436)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2440)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2444)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2448)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2452)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2456)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2460)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2464)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2468)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2472)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2476)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2480)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2484)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2488)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2492)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2496)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 2500)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2504)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2508)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 2512)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2516)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2520)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2524)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2528)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 1) (i32.const 2532)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 1) (i32.const 2536)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 1) (i32.const 2540)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 1) (i32.const 2544)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 1) (i32.const 2548)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2552)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 1) (i32.const 2556)) + (call $assert_return (call $fne (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2560)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 1) (i32.const 2564)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2568)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 1) (i32.const 2572)) + (call $assert_return (call $fne (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2576)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2580)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2584)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2588)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2592)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2596)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2600)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2604)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2608)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2612)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2616)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2620)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2624)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2628)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2632)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2636)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2640)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2644)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2648)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2652)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2656)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2660)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2664)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2668)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2672)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 2676)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2680)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2684)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 2688)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 1) (i32.const 2692)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 1) (i32.const 2696)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 1) (i32.const 2700)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 1) (i32.const 2704)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 1) (i32.const 2708)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2712)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 1) (i32.const 2716)) + (call $assert_return (call $fne (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2720)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 1) (i32.const 2724)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2728)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 1) (i32.const 2732)) + (call $assert_return (call $fne (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2736)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2740)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2744)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2748)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2752)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2756)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2760)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2764)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2768)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2772)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2776)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2780)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2784)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2788)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2792)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2796)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x1p-1)) (i32.const 1) (i32.const 2800)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2804)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2808)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x1p+0)) (i32.const 1) (i32.const 2812)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x1p+0)) (i32.const 1) (i32.const 2816)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2820)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2824)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 2828)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 2832)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2836)) + (call $assert_return (call $fne (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2840)) + (call $assert_return (call $fne (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 2844)) + (call $assert_return (call $fne (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 2848)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -inf)) (i32.const 0) (i32.const 2852)) + (call $assert_return (call $fne (f32.const -inf) (f32.const inf)) (i32.const 1) (i32.const 2856)) + (call $assert_return (call $fne (f32.const inf) (f32.const -inf)) (i32.const 1) (i32.const 2860)) + (call $assert_return (call $fne (f32.const inf) (f32.const inf)) (i32.const 0) (i32.const 2864)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -nan)) (i32.const 1) (i32.const 2868)) + (call $assert_return (call $fne (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2872)) + (call $assert_return (call $fne (f32.const -inf) (f32.const nan)) (i32.const 1) (i32.const 2876)) + (call $assert_return (call $fne (f32.const -inf) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2880)) + (call $assert_return (call $fne (f32.const inf) (f32.const -nan)) (i32.const 1) (i32.const 2884)) + (call $assert_return (call $fne (f32.const inf) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 2888)) + (call $assert_return (call $fne (f32.const inf) (f32.const nan)) (i32.const 1) (i32.const 2892)) + (call $assert_return (call $fne (f32.const inf) (f32.const nan:0x200000)) (i32.const 1) (i32.const 2896)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2900)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2904)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2908)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2912)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2916)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 1) (i32.const 2920)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2924)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 1) (i32.const 2928)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2932)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2936)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2940)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2944)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2948)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 1) (i32.const 2952)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2956)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 1) (i32.const 2960)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2964)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2968)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2972)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2976)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2980)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 1) (i32.const 2984)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2988)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 1) (i32.const 2992)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x1p-1)) (i32.const 1) (i32.const 2996)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 1) (i32.const 3000)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3004)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3008)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x1p-1)) (i32.const 1) (i32.const 3012)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 1) (i32.const 3016)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3020)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3024)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x1p+0)) (i32.const 1) (i32.const 3028)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 1) (i32.const 3032)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3036)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3040)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x1p+0)) (i32.const 1) (i32.const 3044)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 1) (i32.const 3048)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3052)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3056)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 3060)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 3064)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3068)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3072)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 3076)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 3080)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3084)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3088)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 3092)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 3096)) + (call $assert_return (call $fne (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3100)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3104)) + (call $assert_return (call $fne (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 3108)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 3112)) + (call $assert_return (call $fne (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3116)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3120)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -inf)) (i32.const 1) (i32.const 3124)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 1) (i32.const 3128)) + (call $assert_return (call $fne (f32.const -nan) (f32.const inf)) (i32.const 1) (i32.const 3132)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const inf)) (i32.const 1) (i32.const 3136)) + (call $assert_return (call $fne (f32.const nan) (f32.const -inf)) (i32.const 1) (i32.const 3140)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -inf)) (i32.const 1) (i32.const 3144)) + (call $assert_return (call $fne (f32.const nan) (f32.const inf)) (i32.const 1) (i32.const 3148)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const inf)) (i32.const 1) (i32.const 3152)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -nan)) (i32.const 1) (i32.const 3156)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 1) (i32.const 3160)) + (call $assert_return (call $fne (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 3164)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 3168)) + (call $assert_return (call $fne (f32.const -nan) (f32.const nan)) (i32.const 1) (i32.const 3172)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const nan)) (i32.const 1) (i32.const 3176)) + (call $assert_return (call $fne (f32.const -nan) (f32.const nan:0x200000)) (i32.const 1) (i32.const 3180)) + (call $assert_return (call $fne (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 1) (i32.const 3184)) + (call $assert_return (call $fne (f32.const nan) (f32.const -nan)) (i32.const 1) (i32.const 3188)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -nan)) (i32.const 1) (i32.const 3192)) + (call $assert_return (call $fne (f32.const nan) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 3196)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 1) (i32.const 3200)) + (call $assert_return (call $fne (f32.const nan) (f32.const nan)) (i32.const 1) (i32.const 3204)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const nan)) (i32.const 1) (i32.const 3208)) + (call $assert_return (call $fne (f32.const nan) (f32.const nan:0x200000)) (i32.const 1) (i32.const 3212)) + (call $assert_return (call $fne (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 1) (i32.const 3216)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 3220)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 3224)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 3228)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 3232)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3236)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 3240)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3244)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 3248)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3252)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3256)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3260)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3264)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3268)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3272)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3276)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3280)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3284)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3288)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3292)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3296)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3300)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3304)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3308)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3312)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3316)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3320)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3324)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3328)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -inf)) (i32.const 0) (i32.const 3332)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const inf)) (i32.const 1) (i32.const 3336)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -inf)) (i32.const 0) (i32.const 3340)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const inf)) (i32.const 1) (i32.const 3344)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 3348)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3352)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 3356)) + (call $assert_return (call $flt (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3360)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 3364)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3368)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 3372)) + (call $assert_return (call $flt (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3376)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1) (i32.const 3380)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1) (i32.const 3384)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0) (i32.const 3388)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0) (i32.const 3392)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3396)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1) (i32.const 3400)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3404)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0) (i32.const 3408)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3412)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3416)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3420)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3424)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3428)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3432)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3436)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3440)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3444)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3448)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3452)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3456)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3460)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3464)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3468)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3472)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3476)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3480)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3484)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3488)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -inf)) (i32.const 0) (i32.const 3492)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const inf)) (i32.const 1) (i32.const 3496)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -inf)) (i32.const 0) (i32.const 3500)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const inf)) (i32.const 1) (i32.const 3504)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 3508)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3512)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 3516)) + (call $assert_return (call $flt (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3520)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 3524)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3528)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 3532)) + (call $assert_return (call $flt (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3536)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1) (i32.const 3540)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1) (i32.const 3544)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0) (i32.const 3548)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0) (i32.const 3552)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1) (i32.const 3556)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1) (i32.const 3560)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3564)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0) (i32.const 3568)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3572)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3576)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3580)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0) (i32.const 3584)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3588)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3592)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3596)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3600)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3604)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3608)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3612)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3616)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3620)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3624)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3628)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3632)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3636)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3640)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3644)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3648)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -inf)) (i32.const 0) (i32.const 3652)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const inf)) (i32.const 1) (i32.const 3656)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -inf)) (i32.const 0) (i32.const 3660)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const inf)) (i32.const 1) (i32.const 3664)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 3668)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3672)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 3676)) + (call $assert_return (call $flt (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3680)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 3684)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3688)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 3692)) + (call $assert_return (call $flt (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3696)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1) (i32.const 3700)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1) (i32.const 3704)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0) (i32.const 3708)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0) (i32.const 3712)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1) (i32.const 3716)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1) (i32.const 3720)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3724)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0) (i32.const 3728)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1) (i32.const 3732)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3736)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3740)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0) (i32.const 3744)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3748)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3752)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3756)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0) (i32.const 3760)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3764)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3768)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3772)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3776)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3780)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3784)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3788)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3792)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3796)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3800)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3804)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3808)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -inf)) (i32.const 0) (i32.const 3812)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const inf)) (i32.const 1) (i32.const 3816)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -inf)) (i32.const 0) (i32.const 3820)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const inf)) (i32.const 1) (i32.const 3824)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 3828)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3832)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 3836)) + (call $assert_return (call $flt (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3840)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 3844)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3848)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 3852)) + (call $assert_return (call $flt (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 3856)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 3860)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 3864)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 3868)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 3872)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 3876)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 3880)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 3884)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 3888)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 3892)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 3896)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 3900)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 3904)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 3908)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 3912)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 3916)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 3920)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3924)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 3928)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 3932)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 3936)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3940)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3944)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 3948)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 3952)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3956)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3960)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 3964)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 3968)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -inf)) (i32.const 0) (i32.const 3972)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const inf)) (i32.const 1) (i32.const 3976)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -inf)) (i32.const 0) (i32.const 3980)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const inf)) (i32.const 1) (i32.const 3984)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 3988)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 3992)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 3996)) + (call $assert_return (call $flt (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4000)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 4004)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4008)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 4012)) + (call $assert_return (call $flt (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4016)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1) (i32.const 4020)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1) (i32.const 4024)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4028)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4032)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1) (i32.const 4036)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1) (i32.const 4040)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4044)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4048)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1) (i32.const 4052)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1) (i32.const 4056)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4060)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4064)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1) (i32.const 4068)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1) (i32.const 4072)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4076)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4080)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1) (i32.const 4084)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1) (i32.const 4088)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4092)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4096)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4100)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 4104)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4108)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4112)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4116)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 4120)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4124)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 4128)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 0) (i32.const 4132)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 1) (i32.const 4136)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 0) (i32.const 4140)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 1) (i32.const 4144)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 4148)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4152)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 4156)) + (call $assert_return (call $flt (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4160)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 4164)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4168)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 4172)) + (call $assert_return (call $flt (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4176)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1) (i32.const 4180)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1) (i32.const 4184)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4188)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4192)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1) (i32.const 4196)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1) (i32.const 4200)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4204)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4208)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1) (i32.const 4212)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1) (i32.const 4216)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4220)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4224)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1) (i32.const 4228)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1) (i32.const 4232)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4236)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4240)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1) (i32.const 4244)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1) (i32.const 4248)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4252)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4256)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 4260)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 4264)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4268)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4272)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4276)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 4280)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4284)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 4288)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 0) (i32.const 4292)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 1) (i32.const 4296)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 0) (i32.const 4300)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 1) (i32.const 4304)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 4308)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4312)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 4316)) + (call $assert_return (call $flt (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4320)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 4324)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4328)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 4332)) + (call $assert_return (call $flt (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4336)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x0p+0)) (i32.const 1) (i32.const 4340)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x0p+0)) (i32.const 1) (i32.const 4344)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4348)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4352)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x1p-149)) (i32.const 1) (i32.const 4356)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x1p-149)) (i32.const 1) (i32.const 4360)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4364)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4368)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x1p-126)) (i32.const 1) (i32.const 4372)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x1p-126)) (i32.const 1) (i32.const 4376)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4380)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4384)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x1p-1)) (i32.const 1) (i32.const 4388)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x1p-1)) (i32.const 1) (i32.const 4392)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4396)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4400)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x1p+0)) (i32.const 1) (i32.const 4404)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x1p+0)) (i32.const 1) (i32.const 4408)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4412)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4416)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 4420)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 4424)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4428)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4432)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 4436)) + (call $assert_return (call $flt (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 4440)) + (call $assert_return (call $flt (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4444)) + (call $assert_return (call $flt (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 4448)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -inf)) (i32.const 0) (i32.const 4452)) + (call $assert_return (call $flt (f32.const -inf) (f32.const inf)) (i32.const 1) (i32.const 4456)) + (call $assert_return (call $flt (f32.const inf) (f32.const -inf)) (i32.const 0) (i32.const 4460)) + (call $assert_return (call $flt (f32.const inf) (f32.const inf)) (i32.const 0) (i32.const 4464)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -nan)) (i32.const 0) (i32.const 4468)) + (call $assert_return (call $flt (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4472)) + (call $assert_return (call $flt (f32.const -inf) (f32.const nan)) (i32.const 0) (i32.const 4476)) + (call $assert_return (call $flt (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4480)) + (call $assert_return (call $flt (f32.const inf) (f32.const -nan)) (i32.const 0) (i32.const 4484)) + (call $assert_return (call $flt (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4488)) + (call $assert_return (call $flt (f32.const inf) (f32.const nan)) (i32.const 0) (i32.const 4492)) + (call $assert_return (call $flt (f32.const inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4496)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4500)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4504)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4508)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4512)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4516)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4520)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4524)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4528)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4532)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4536)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4540)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4544)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4548)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4552)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4556)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 4560)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4564)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4568)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4572)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4576)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4580)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4584)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4588)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 4592)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4596)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4600)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4604)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4608)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4612)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4616)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4620)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 4624)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4628)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4632)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4636)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4640)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4644)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4648)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4652)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 4656)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4660)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4664)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4668)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4672)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4676)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4680)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4684)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 4688)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4692)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4696)) + (call $assert_return (call $flt (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 4700)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 4704)) + (call $assert_return (call $flt (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4708)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4712)) + (call $assert_return (call $flt (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 4716)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 4720)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -inf)) (i32.const 0) (i32.const 4724)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 4728)) + (call $assert_return (call $flt (f32.const -nan) (f32.const inf)) (i32.const 0) (i32.const 4732)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 4736)) + (call $assert_return (call $flt (f32.const nan) (f32.const -inf)) (i32.const 0) (i32.const 4740)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 4744)) + (call $assert_return (call $flt (f32.const nan) (f32.const inf)) (i32.const 0) (i32.const 4748)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 4752)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -nan)) (i32.const 0) (i32.const 4756)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 4760)) + (call $assert_return (call $flt (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4764)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4768)) + (call $assert_return (call $flt (f32.const -nan) (f32.const nan)) (i32.const 0) (i32.const 4772)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 4776)) + (call $assert_return (call $flt (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4780)) + (call $assert_return (call $flt (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4784)) + (call $assert_return (call $flt (f32.const nan) (f32.const -nan)) (i32.const 0) (i32.const 4788)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 4792)) + (call $assert_return (call $flt (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4796)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4800)) + (call $assert_return (call $flt (f32.const nan) (f32.const nan)) (i32.const 0) (i32.const 4804)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 4808)) + (call $assert_return (call $flt (f32.const nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4812)) + (call $assert_return (call $flt (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4816)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 4820)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 4824)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 4828)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 4832)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4836)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 4840)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 4844)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 4848)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4852)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 4856)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 4860)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 4864)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4868)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 4872)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 4876)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 4880)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4884)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 4888)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 4892)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 4896)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4900)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 4904)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 4908)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 4912)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4916)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 4920)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 4924)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 4928)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -inf)) (i32.const 0) (i32.const 4932)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const inf)) (i32.const 1) (i32.const 4936)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -inf)) (i32.const 0) (i32.const 4940)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const inf)) (i32.const 1) (i32.const 4944)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 4948)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4952)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 4956)) + (call $assert_return (call $fle (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4960)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 4964)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 4968)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 4972)) + (call $assert_return (call $fle (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 4976)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1) (i32.const 4980)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1) (i32.const 4984)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0) (i32.const 4988)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0) (i32.const 4992)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1) (i32.const 4996)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5000)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5004)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5008)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5012)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5016)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5020)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5024)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5028)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5032)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5036)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5040)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5044)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5048)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5052)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5056)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5060)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5064)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5068)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5072)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5076)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5080)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5084)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5088)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -inf)) (i32.const 0) (i32.const 5092)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const inf)) (i32.const 1) (i32.const 5096)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -inf)) (i32.const 0) (i32.const 5100)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const inf)) (i32.const 1) (i32.const 5104)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 5108)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5112)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 5116)) + (call $assert_return (call $fle (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5120)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 5124)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5128)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 5132)) + (call $assert_return (call $fle (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5136)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1) (i32.const 5140)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1) (i32.const 5144)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0) (i32.const 5148)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0) (i32.const 5152)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1) (i32.const 5156)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5160)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5164)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0) (i32.const 5168)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1) (i32.const 5172)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5176)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5180)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5184)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5188)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5192)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5196)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5200)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5204)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5208)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5212)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5216)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5220)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5224)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5228)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5232)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5236)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5240)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5244)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5248)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -inf)) (i32.const 0) (i32.const 5252)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const inf)) (i32.const 1) (i32.const 5256)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -inf)) (i32.const 0) (i32.const 5260)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const inf)) (i32.const 1) (i32.const 5264)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 5268)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5272)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 5276)) + (call $assert_return (call $fle (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5280)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 5284)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5288)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 5292)) + (call $assert_return (call $fle (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5296)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1) (i32.const 5300)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1) (i32.const 5304)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0) (i32.const 5308)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0) (i32.const 5312)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1) (i32.const 5316)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5320)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5324)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0) (i32.const 5328)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1) (i32.const 5332)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5336)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5340)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0) (i32.const 5344)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1) (i32.const 5348)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5352)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5356)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5360)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5364)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5368)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5372)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5376)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5380)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5384)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5388)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5392)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5396)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5400)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5404)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5408)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -inf)) (i32.const 0) (i32.const 5412)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const inf)) (i32.const 1) (i32.const 5416)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -inf)) (i32.const 0) (i32.const 5420)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const inf)) (i32.const 1) (i32.const 5424)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 5428)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5432)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 5436)) + (call $assert_return (call $fle (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5440)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 5444)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5448)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 5452)) + (call $assert_return (call $fle (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5456)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 5460)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 5464)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 5468)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 5472)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 5476)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5480)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5484)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 5488)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 5492)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5496)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5500)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 5504)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 5508)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5512)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5516)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 5520)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 5524)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5528)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5532)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5536)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5540)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5544)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5548)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5552)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5556)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5560)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5564)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5568)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -inf)) (i32.const 0) (i32.const 5572)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const inf)) (i32.const 1) (i32.const 5576)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -inf)) (i32.const 0) (i32.const 5580)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const inf)) (i32.const 1) (i32.const 5584)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 5588)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5592)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 5596)) + (call $assert_return (call $fle (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5600)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 5604)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5608)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 5612)) + (call $assert_return (call $fle (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5616)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1) (i32.const 5620)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1) (i32.const 5624)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0) (i32.const 5628)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0) (i32.const 5632)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1) (i32.const 5636)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5640)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5644)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0) (i32.const 5648)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1) (i32.const 5652)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5656)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5660)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0) (i32.const 5664)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1) (i32.const 5668)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5672)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5676)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0) (i32.const 5680)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1) (i32.const 5684)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5688)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5692)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0) (i32.const 5696)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 5700)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5704)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5708)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5712)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5716)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5720)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5724)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5728)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 0) (i32.const 5732)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 1) (i32.const 5736)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 0) (i32.const 5740)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 1) (i32.const 5744)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 5748)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5752)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 5756)) + (call $assert_return (call $fle (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5760)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 5764)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5768)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 5772)) + (call $assert_return (call $fle (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5776)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1) (i32.const 5780)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1) (i32.const 5784)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0) (i32.const 5788)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0) (i32.const 5792)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1) (i32.const 5796)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5800)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5804)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0) (i32.const 5808)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1) (i32.const 5812)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5816)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5820)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0) (i32.const 5824)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1) (i32.const 5828)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5832)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5836)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0) (i32.const 5840)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1) (i32.const 5844)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1) (i32.const 5848)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0) (i32.const 5852)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0) (i32.const 5856)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 5860)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 5864)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 5868)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 5872)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 5876)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5880)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 5884)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 5888)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 0) (i32.const 5892)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 1) (i32.const 5896)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 0) (i32.const 5900)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 1) (i32.const 5904)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 5908)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5912)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 5916)) + (call $assert_return (call $fle (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5920)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 5924)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 5928)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 5932)) + (call $assert_return (call $fle (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 5936)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x0p+0)) (i32.const 1) (i32.const 5940)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x0p+0)) (i32.const 1) (i32.const 5944)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x0p+0)) (i32.const 0) (i32.const 5948)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x0p+0)) (i32.const 0) (i32.const 5952)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x1p-149)) (i32.const 1) (i32.const 5956)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x1p-149)) (i32.const 1) (i32.const 5960)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x1p-149)) (i32.const 0) (i32.const 5964)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x1p-149)) (i32.const 0) (i32.const 5968)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x1p-126)) (i32.const 1) (i32.const 5972)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x1p-126)) (i32.const 1) (i32.const 5976)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x1p-126)) (i32.const 0) (i32.const 5980)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x1p-126)) (i32.const 0) (i32.const 5984)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x1p-1)) (i32.const 1) (i32.const 5988)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x1p-1)) (i32.const 1) (i32.const 5992)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x1p-1)) (i32.const 0) (i32.const 5996)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6000)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6004)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x1p+0)) (i32.const 1) (i32.const 6008)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x1p+0)) (i32.const 0) (i32.const 6012)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6016)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6020)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 6024)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 6028)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6032)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6036)) + (call $assert_return (call $fle (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 6040)) + (call $assert_return (call $fle (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 6044)) + (call $assert_return (call $fle (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6048)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -inf)) (i32.const 1) (i32.const 6052)) + (call $assert_return (call $fle (f32.const -inf) (f32.const inf)) (i32.const 1) (i32.const 6056)) + (call $assert_return (call $fle (f32.const inf) (f32.const -inf)) (i32.const 0) (i32.const 6060)) + (call $assert_return (call $fle (f32.const inf) (f32.const inf)) (i32.const 1) (i32.const 6064)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -nan)) (i32.const 0) (i32.const 6068)) + (call $assert_return (call $fle (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6072)) + (call $assert_return (call $fle (f32.const -inf) (f32.const nan)) (i32.const 0) (i32.const 6076)) + (call $assert_return (call $fle (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6080)) + (call $assert_return (call $fle (f32.const inf) (f32.const -nan)) (i32.const 0) (i32.const 6084)) + (call $assert_return (call $fle (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6088)) + (call $assert_return (call $fle (f32.const inf) (f32.const nan)) (i32.const 0) (i32.const 6092)) + (call $assert_return (call $fle (f32.const inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6096)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6100)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6104)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6108)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6112)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6116)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6120)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6124)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6128)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6132)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6136)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6140)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6144)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6148)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6152)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6156)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6160)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 6164)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 6168)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6172)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6176)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 6180)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 6184)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6188)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6192)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 6196)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 6200)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6204)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6208)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 6212)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 6216)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6220)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6224)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 6228)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 6232)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6236)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6240)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 6244)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 6248)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6252)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6256)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 6260)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 6264)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6268)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6272)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 6276)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 6280)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6284)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6288)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 6292)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 6296)) + (call $assert_return (call $fle (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6300)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6304)) + (call $assert_return (call $fle (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 6308)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 6312)) + (call $assert_return (call $fle (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6316)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6320)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -inf)) (i32.const 0) (i32.const 6324)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 6328)) + (call $assert_return (call $fle (f32.const -nan) (f32.const inf)) (i32.const 0) (i32.const 6332)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 6336)) + (call $assert_return (call $fle (f32.const nan) (f32.const -inf)) (i32.const 0) (i32.const 6340)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 6344)) + (call $assert_return (call $fle (f32.const nan) (f32.const inf)) (i32.const 0) (i32.const 6348)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 6352)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -nan)) (i32.const 0) (i32.const 6356)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 6360)) + (call $assert_return (call $fle (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6364)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6368)) + (call $assert_return (call $fle (f32.const -nan) (f32.const nan)) (i32.const 0) (i32.const 6372)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 6376)) + (call $assert_return (call $fle (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6380)) + (call $assert_return (call $fle (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6384)) + (call $assert_return (call $fle (f32.const nan) (f32.const -nan)) (i32.const 0) (i32.const 6388)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 6392)) + (call $assert_return (call $fle (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6396)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6400)) + (call $assert_return (call $fle (f32.const nan) (f32.const nan)) (i32.const 0) (i32.const 6404)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 6408)) + (call $assert_return (call $fle (f32.const nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6412)) + (call $assert_return (call $fle (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6416)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6420)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6424)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6428)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6432)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 6436)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6440)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 6444)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6448)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 6452)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6456)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 6460)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6464)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6468)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6472)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6476)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6480)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6484)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6488)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6492)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6496)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6500)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6504)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6508)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6512)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6516)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6520)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6524)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6528)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -inf)) (i32.const 1) (i32.const 6532)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const inf)) (i32.const 0) (i32.const 6536)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -inf)) (i32.const 1) (i32.const 6540)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const inf)) (i32.const 0) (i32.const 6544)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 6548)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6552)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 6556)) + (call $assert_return (call $fgt (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6560)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 6564)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6568)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 6572)) + (call $assert_return (call $fgt (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6576)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6580)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6584)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1) (i32.const 6588)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1) (i32.const 6592)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6596)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6600)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1) (i32.const 6604)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6608)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1) (i32.const 6612)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6616)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1) (i32.const 6620)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6624)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6628)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6632)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6636)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6640)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6644)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6648)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6652)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6656)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6660)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6664)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6668)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6672)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6676)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6680)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6684)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6688)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -inf)) (i32.const 1) (i32.const 6692)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const inf)) (i32.const 0) (i32.const 6696)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -inf)) (i32.const 1) (i32.const 6700)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const inf)) (i32.const 0) (i32.const 6704)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 6708)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6712)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 6716)) + (call $assert_return (call $fgt (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6720)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 6724)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6728)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 6732)) + (call $assert_return (call $fgt (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6736)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6740)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6744)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1) (i32.const 6748)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1) (i32.const 6752)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6756)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6760)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1) (i32.const 6764)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1) (i32.const 6768)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0) (i32.const 6772)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6776)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1) (i32.const 6780)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6784)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6788)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6792)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6796)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6800)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6804)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6808)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6812)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6816)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6820)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6824)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6828)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6832)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6836)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6840)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6844)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 6848)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -inf)) (i32.const 1) (i32.const 6852)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const inf)) (i32.const 0) (i32.const 6856)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -inf)) (i32.const 1) (i32.const 6860)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const inf)) (i32.const 0) (i32.const 6864)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 6868)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6872)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 6876)) + (call $assert_return (call $fgt (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6880)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 6884)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 6888)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 6892)) + (call $assert_return (call $fgt (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 6896)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0) (i32.const 6900)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0) (i32.const 6904)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1) (i32.const 6908)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1) (i32.const 6912)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0) (i32.const 6916)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0) (i32.const 6920)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1) (i32.const 6924)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1) (i32.const 6928)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0) (i32.const 6932)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0) (i32.const 6936)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1) (i32.const 6940)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1) (i32.const 6944)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0) (i32.const 6948)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6952)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1) (i32.const 6956)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0) (i32.const 6960)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6964)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6968)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1) (i32.const 6972)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0) (i32.const 6976)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6980)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6984)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 6988)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 6992)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 6996)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7000)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7004)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7008)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -inf)) (i32.const 1) (i32.const 7012)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const inf)) (i32.const 0) (i32.const 7016)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -inf)) (i32.const 1) (i32.const 7020)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const inf)) (i32.const 0) (i32.const 7024)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 7028)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7032)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 7036)) + (call $assert_return (call $fgt (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7040)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 7044)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7048)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 7052)) + (call $assert_return (call $fgt (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7056)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7060)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7064)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 7068)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 7072)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7076)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7080)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 7084)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 7088)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7092)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7096)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 7100)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 7104)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7108)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7112)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 7116)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 7120)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7124)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7128)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 7132)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7136)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 7140)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7144)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 7148)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7152)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7156)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7160)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7164)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7168)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -inf)) (i32.const 1) (i32.const 7172)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const inf)) (i32.const 0) (i32.const 7176)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -inf)) (i32.const 1) (i32.const 7180)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const inf)) (i32.const 0) (i32.const 7184)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 7188)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7192)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 7196)) + (call $assert_return (call $fgt (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7200)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 7204)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7208)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 7212)) + (call $assert_return (call $fgt (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7216)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7220)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7224)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1) (i32.const 7228)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1) (i32.const 7232)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7236)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7240)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1) (i32.const 7244)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1) (i32.const 7248)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7252)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7256)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1) (i32.const 7260)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1) (i32.const 7264)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7268)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7272)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1) (i32.const 7276)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1) (i32.const 7280)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7284)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7288)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1) (i32.const 7292)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1) (i32.const 7296)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7300)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7304)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 7308)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7312)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7316)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7320)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7324)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7328)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 1) (i32.const 7332)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 0) (i32.const 7336)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 1) (i32.const 7340)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 0) (i32.const 7344)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 7348)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7352)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 7356)) + (call $assert_return (call $fgt (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7360)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 7364)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7368)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 7372)) + (call $assert_return (call $fgt (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7376)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7380)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7384)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1) (i32.const 7388)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1) (i32.const 7392)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7396)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7400)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1) (i32.const 7404)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1) (i32.const 7408)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7412)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7416)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1) (i32.const 7420)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1) (i32.const 7424)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7428)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7432)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1) (i32.const 7436)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1) (i32.const 7440)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7444)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7448)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1) (i32.const 7452)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1) (i32.const 7456)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7460)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7464)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 7468)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 7472)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 7476)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7480)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7484)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7488)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 1) (i32.const 7492)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 0) (i32.const 7496)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 1) (i32.const 7500)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 0) (i32.const 7504)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 7508)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7512)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 7516)) + (call $assert_return (call $fgt (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7520)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 7524)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7528)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 7532)) + (call $assert_return (call $fgt (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7536)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7540)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7544)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x0p+0)) (i32.const 1) (i32.const 7548)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x0p+0)) (i32.const 1) (i32.const 7552)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7556)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7560)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x1p-149)) (i32.const 1) (i32.const 7564)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x1p-149)) (i32.const 1) (i32.const 7568)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7572)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7576)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x1p-126)) (i32.const 1) (i32.const 7580)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x1p-126)) (i32.const 1) (i32.const 7584)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7588)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7592)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x1p-1)) (i32.const 1) (i32.const 7596)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x1p-1)) (i32.const 1) (i32.const 7600)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7604)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7608)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x1p+0)) (i32.const 1) (i32.const 7612)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x1p+0)) (i32.const 1) (i32.const 7616)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7620)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7624)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 7628)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 7632)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 7636)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7640)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 7644)) + (call $assert_return (call $fgt (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 7648)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -inf)) (i32.const 0) (i32.const 7652)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const inf)) (i32.const 0) (i32.const 7656)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -inf)) (i32.const 1) (i32.const 7660)) + (call $assert_return (call $fgt (f32.const inf) (f32.const inf)) (i32.const 0) (i32.const 7664)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -nan)) (i32.const 0) (i32.const 7668)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7672)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const nan)) (i32.const 0) (i32.const 7676)) + (call $assert_return (call $fgt (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7680)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -nan)) (i32.const 0) (i32.const 7684)) + (call $assert_return (call $fgt (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7688)) + (call $assert_return (call $fgt (f32.const inf) (f32.const nan)) (i32.const 0) (i32.const 7692)) + (call $assert_return (call $fgt (f32.const inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7696)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7700)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7704)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7708)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7712)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7716)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 7720)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7724)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 7728)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7732)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7736)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7740)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7744)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7748)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 7752)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7756)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 7760)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7764)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7768)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7772)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7776)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7780)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 7784)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7788)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 7792)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7796)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7800)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7804)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7808)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7812)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 7816)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7820)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 7824)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7828)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7832)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7836)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7840)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7844)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 7848)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7852)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 7856)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7860)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7864)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7868)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7872)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7876)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 7880)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7884)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 7888)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 7892)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 7896)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7900)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7904)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 7908)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 7912)) + (call $assert_return (call $fgt (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7916)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 7920)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -inf)) (i32.const 0) (i32.const 7924)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 7928)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const inf)) (i32.const 0) (i32.const 7932)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 7936)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -inf)) (i32.const 0) (i32.const 7940)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 7944)) + (call $assert_return (call $fgt (f32.const nan) (f32.const inf)) (i32.const 0) (i32.const 7948)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 7952)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -nan)) (i32.const 0) (i32.const 7956)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 7960)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7964)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7968)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const nan)) (i32.const 0) (i32.const 7972)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 7976)) + (call $assert_return (call $fgt (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7980)) + (call $assert_return (call $fgt (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 7984)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -nan)) (i32.const 0) (i32.const 7988)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 7992)) + (call $assert_return (call $fgt (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 7996)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8000)) + (call $assert_return (call $fgt (f32.const nan) (f32.const nan)) (i32.const 0) (i32.const 8004)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 8008)) + (call $assert_return (call $fgt (f32.const nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8012)) + (call $assert_return (call $fgt (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8016)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8020)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8024)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8028)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8032)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8036)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8040)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8044)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8048)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8052)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8056)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8060)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8064)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8068)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8072)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8076)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8080)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8084)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8088)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8092)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8096)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8100)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8104)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8108)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8112)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8116)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8120)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8124)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8128)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -inf)) (i32.const 1) (i32.const 8132)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const inf)) (i32.const 0) (i32.const 8136)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -inf)) (i32.const 1) (i32.const 8140)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const inf)) (i32.const 0) (i32.const 8144)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 8148)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8152)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 8156)) + (call $assert_return (call $fge (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8160)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0) (i32.const 8164)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8168)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const nan)) (i32.const 0) (i32.const 8172)) + (call $assert_return (call $fge (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8176)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0) (i32.const 8180)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0) (i32.const 8184)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8188)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8192)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8196)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8200)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8204)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1) (i32.const 8208)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8212)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8216)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8220)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8224)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8228)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8232)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8236)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8240)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8244)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8248)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8252)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8256)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8260)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8264)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8268)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8272)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8276)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8280)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8284)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8288)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -inf)) (i32.const 1) (i32.const 8292)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const inf)) (i32.const 0) (i32.const 8296)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -inf)) (i32.const 1) (i32.const 8300)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const inf)) (i32.const 0) (i32.const 8304)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 8308)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8312)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 8316)) + (call $assert_return (call $fge (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8320)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0) (i32.const 8324)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8328)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const nan)) (i32.const 0) (i32.const 8332)) + (call $assert_return (call $fge (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8336)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0) (i32.const 8340)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0) (i32.const 8344)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8348)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8352)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0) (i32.const 8356)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8360)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8364)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1) (i32.const 8368)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8372)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8376)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8380)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1) (i32.const 8384)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8388)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8392)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8396)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8400)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8404)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8408)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8412)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8416)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8420)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8424)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8428)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8432)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8436)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8440)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8444)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8448)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -inf)) (i32.const 1) (i32.const 8452)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const inf)) (i32.const 0) (i32.const 8456)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -inf)) (i32.const 1) (i32.const 8460)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const inf)) (i32.const 0) (i32.const 8464)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 8468)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8472)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 8476)) + (call $assert_return (call $fge (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8480)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0) (i32.const 8484)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8488)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const nan)) (i32.const 0) (i32.const 8492)) + (call $assert_return (call $fge (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8496)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0) (i32.const 8500)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0) (i32.const 8504)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8508)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8512)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0) (i32.const 8516)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8520)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8524)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1) (i32.const 8528)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0) (i32.const 8532)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8536)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8540)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1) (i32.const 8544)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8548)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8552)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8556)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1) (i32.const 8560)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8564)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8568)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8572)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8576)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8580)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8584)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8588)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8592)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8596)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8600)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8604)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8608)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -inf)) (i32.const 1) (i32.const 8612)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const inf)) (i32.const 0) (i32.const 8616)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -inf)) (i32.const 1) (i32.const 8620)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const inf)) (i32.const 0) (i32.const 8624)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 8628)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8632)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 8636)) + (call $assert_return (call $fge (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8640)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0) (i32.const 8644)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8648)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const nan)) (i32.const 0) (i32.const 8652)) + (call $assert_return (call $fge (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8656)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0) (i32.const 8660)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0) (i32.const 8664)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8668)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8672)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0) (i32.const 8676)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8680)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8684)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1) (i32.const 8688)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0) (i32.const 8692)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8696)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8700)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1) (i32.const 8704)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0) (i32.const 8708)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8712)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8716)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1) (i32.const 8720)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8724)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8728)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8732)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1) (i32.const 8736)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8740)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8744)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8748)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8752)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8756)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8760)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8764)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8768)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -inf)) (i32.const 1) (i32.const 8772)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const inf)) (i32.const 0) (i32.const 8776)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -inf)) (i32.const 1) (i32.const 8780)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const inf)) (i32.const 0) (i32.const 8784)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 8788)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8792)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 8796)) + (call $assert_return (call $fge (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8800)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0) (i32.const 8804)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8808)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const nan)) (i32.const 0) (i32.const 8812)) + (call $assert_return (call $fge (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8816)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0) (i32.const 8820)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0) (i32.const 8824)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8828)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8832)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0) (i32.const 8836)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0) (i32.const 8840)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1) (i32.const 8844)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1) (i32.const 8848)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0) (i32.const 8852)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0) (i32.const 8856)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1) (i32.const 8860)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1) (i32.const 8864)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0) (i32.const 8868)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0) (i32.const 8872)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1) (i32.const 8876)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1) (i32.const 8880)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0) (i32.const 8884)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0) (i32.const 8888)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1) (i32.const 8892)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1) (i32.const 8896)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8900)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 8904)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 8908)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 8912)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8916)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8920)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 8924)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 8928)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 1) (i32.const 8932)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 0) (i32.const 8936)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 1) (i32.const 8940)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 0) (i32.const 8944)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 8948)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8952)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 8956)) + (call $assert_return (call $fge (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8960)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0) (i32.const 8964)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 8968)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0) (i32.const 8972)) + (call $assert_return (call $fge (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0) (i32.const 8976)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0) (i32.const 8980)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0) (i32.const 8984)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1) (i32.const 8988)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1) (i32.const 8992)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0) (i32.const 8996)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0) (i32.const 9000)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1) (i32.const 9004)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1) (i32.const 9008)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0) (i32.const 9012)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0) (i32.const 9016)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1) (i32.const 9020)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1) (i32.const 9024)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0) (i32.const 9028)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0) (i32.const 9032)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1) (i32.const 9036)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1) (i32.const 9040)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0) (i32.const 9044)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0) (i32.const 9048)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1) (i32.const 9052)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1) (i32.const 9056)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 9060)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 9064)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 9068)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 9072)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 9076)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 9080)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 9084)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 9088)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 1) (i32.const 9092)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 0) (i32.const 9096)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 1) (i32.const 9100)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 0) (i32.const 9104)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 9108)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9112)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 9116)) + (call $assert_return (call $fge (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9120)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0) (i32.const 9124)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9128)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0) (i32.const 9132)) + (call $assert_return (call $fge (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9136)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x0p+0)) (i32.const 0) (i32.const 9140)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x0p+0)) (i32.const 0) (i32.const 9144)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x0p+0)) (i32.const 1) (i32.const 9148)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x0p+0)) (i32.const 1) (i32.const 9152)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x1p-149)) (i32.const 0) (i32.const 9156)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x1p-149)) (i32.const 0) (i32.const 9160)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x1p-149)) (i32.const 1) (i32.const 9164)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x1p-149)) (i32.const 1) (i32.const 9168)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x1p-126)) (i32.const 0) (i32.const 9172)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x1p-126)) (i32.const 0) (i32.const 9176)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x1p-126)) (i32.const 1) (i32.const 9180)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x1p-126)) (i32.const 1) (i32.const 9184)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x1p-1)) (i32.const 0) (i32.const 9188)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x1p-1)) (i32.const 0) (i32.const 9192)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x1p-1)) (i32.const 1) (i32.const 9196)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x1p-1)) (i32.const 1) (i32.const 9200)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x1p+0)) (i32.const 0) (i32.const 9204)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x1p+0)) (i32.const 0) (i32.const 9208)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x1p+0)) (i32.const 1) (i32.const 9212)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x1p+0)) (i32.const 1) (i32.const 9216)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 9220)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 9224)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 1) (i32.const 9228)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 1) (i32.const 9232)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 9236)) + (call $assert_return (call $fge (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 9240)) + (call $assert_return (call $fge (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 1) (i32.const 9244)) + (call $assert_return (call $fge (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 1) (i32.const 9248)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -inf)) (i32.const 1) (i32.const 9252)) + (call $assert_return (call $fge (f32.const -inf) (f32.const inf)) (i32.const 0) (i32.const 9256)) + (call $assert_return (call $fge (f32.const inf) (f32.const -inf)) (i32.const 1) (i32.const 9260)) + (call $assert_return (call $fge (f32.const inf) (f32.const inf)) (i32.const 1) (i32.const 9264)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -nan)) (i32.const 0) (i32.const 9268)) + (call $assert_return (call $fge (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9272)) + (call $assert_return (call $fge (f32.const -inf) (f32.const nan)) (i32.const 0) (i32.const 9276)) + (call $assert_return (call $fge (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9280)) + (call $assert_return (call $fge (f32.const inf) (f32.const -nan)) (i32.const 0) (i32.const 9284)) + (call $assert_return (call $fge (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9288)) + (call $assert_return (call $fge (f32.const inf) (f32.const nan)) (i32.const 0) (i32.const 9292)) + (call $assert_return (call $fge (f32.const inf) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9296)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 9300)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 9304)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 9308)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 9312)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x0p+0)) (i32.const 0) (i32.const 9316)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0) (i32.const 9320)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x0p+0)) (i32.const 0) (i32.const 9324)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0) (i32.const 9328)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 9332)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 9336)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 9340)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 9344)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x1p-149)) (i32.const 0) (i32.const 9348)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0) (i32.const 9352)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x1p-149)) (i32.const 0) (i32.const 9356)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0) (i32.const 9360)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 9364)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 9368)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 9372)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 9376)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x1p-126)) (i32.const 0) (i32.const 9380)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0) (i32.const 9384)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x1p-126)) (i32.const 0) (i32.const 9388)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0) (i32.const 9392)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 9396)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 9400)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 9404)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 9408)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x1p-1)) (i32.const 0) (i32.const 9412)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0) (i32.const 9416)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x1p-1)) (i32.const 0) (i32.const 9420)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0) (i32.const 9424)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 9428)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 9432)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 9436)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 9440)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x1p+0)) (i32.const 0) (i32.const 9444)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0) (i32.const 9448)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x1p+0)) (i32.const 0) (i32.const 9452)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0) (i32.const 9456)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 9460)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 9464)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 9468)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 9472)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 9476)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0) (i32.const 9480)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 9484)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0) (i32.const 9488)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 9492)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 9496)) + (call $assert_return (call $fge (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 9500)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 9504)) + (call $assert_return (call $fge (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 9508)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0) (i32.const 9512)) + (call $assert_return (call $fge (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 9516)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0) (i32.const 9520)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -inf)) (i32.const 0) (i32.const 9524)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 9528)) + (call $assert_return (call $fge (f32.const -nan) (f32.const inf)) (i32.const 0) (i32.const 9532)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 9536)) + (call $assert_return (call $fge (f32.const nan) (f32.const -inf)) (i32.const 0) (i32.const 9540)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0) (i32.const 9544)) + (call $assert_return (call $fge (f32.const nan) (f32.const inf)) (i32.const 0) (i32.const 9548)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const inf)) (i32.const 0) (i32.const 9552)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -nan)) (i32.const 0) (i32.const 9556)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 9560)) + (call $assert_return (call $fge (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9564)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9568)) + (call $assert_return (call $fge (f32.const -nan) (f32.const nan)) (i32.const 0) (i32.const 9572)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 9576)) + (call $assert_return (call $fge (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9580)) + (call $assert_return (call $fge (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9584)) + (call $assert_return (call $fge (f32.const nan) (f32.const -nan)) (i32.const 0) (i32.const 9588)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0) (i32.const 9592)) + (call $assert_return (call $fge (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9596)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0) (i32.const 9600)) + (call $assert_return (call $fge (f32.const nan) (f32.const nan)) (i32.const 0) (i32.const 9604)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const nan)) (i32.const 0) (i32.const 9608)) + (call $assert_return (call $fge (f32.const nan) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9612)) + (call $assert_return (call $fge (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0) (i32.const 9616)) +)) +)====="; + +static const char f32_bitwise_test_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (data (i32.const 292) "69") + (data (i32.const 296) "70") + (data (i32.const 300) "71") + (data (i32.const 304) "72") + (data (i32.const 308) "73") + (data (i32.const 312) "74") + (data (i32.const 316) "75") + (data (i32.const 320) "76") + (data (i32.const 324) "77") + (data (i32.const 328) "78") + (data (i32.const 332) "79") + (data (i32.const 336) "80") + (data (i32.const 340) "81") + (data (i32.const 344) "82") + (data (i32.const 348) "83") + (data (i32.const 352) "84") + (data (i32.const 356) "85") + (data (i32.const 360) "86") + (data (i32.const 364) "87") + (data (i32.const 368) "88") + (data (i32.const 372) "89") + (data (i32.const 376) "90") + (data (i32.const 380) "91") + (data (i32.const 384) "92") + (data (i32.const 388) "93") + (data (i32.const 392) "94") + (data (i32.const 396) "95") + (data (i32.const 400) "96") + (data (i32.const 404) "97") + (data (i32.const 408) "98") + (data (i32.const 412) "99") + (data (i32.const 416) "100") + (data (i32.const 420) "101") + (data (i32.const 424) "102") + (data (i32.const 428) "103") + (data (i32.const 432) "104") + (data (i32.const 436) "105") + (data (i32.const 440) "106") + (data (i32.const 444) "107") + (data (i32.const 448) "108") + (data (i32.const 452) "109") + (data (i32.const 456) "110") + (data (i32.const 460) "111") + (data (i32.const 464) "112") + (data (i32.const 468) "113") + (data (i32.const 472) "114") + (data (i32.const 476) "115") + (data (i32.const 480) "116") + (data (i32.const 484) "117") + (data (i32.const 488) "118") + (data (i32.const 492) "119") + (data (i32.const 496) "120") + (data (i32.const 500) "121") + (data (i32.const 504) "122") + (data (i32.const 508) "123") + (data (i32.const 512) "124") + (data (i32.const 516) "125") + (data (i32.const 520) "126") + (data (i32.const 524) "127") + (data (i32.const 528) "128") + (data (i32.const 532) "129") + (data (i32.const 536) "130") + (data (i32.const 540) "131") + (data (i32.const 544) "132") + (data (i32.const 548) "133") + (data (i32.const 552) "134") + (data (i32.const 556) "135") + (data (i32.const 560) "136") + (data (i32.const 564) "137") + (data (i32.const 568) "138") + (data (i32.const 572) "139") + (data (i32.const 576) "140") + (data (i32.const 580) "141") + (data (i32.const 584) "142") + (data (i32.const 588) "143") + (data (i32.const 592) "144") + (data (i32.const 596) "145") + (data (i32.const 600) "146") + (data (i32.const 604) "147") + (data (i32.const 608) "148") + (data (i32.const 612) "149") + (data (i32.const 616) "150") + (data (i32.const 620) "151") + (data (i32.const 624) "152") + (data (i32.const 628) "153") + (data (i32.const 632) "154") + (data (i32.const 636) "155") + (data (i32.const 640) "156") + (data (i32.const 644) "157") + (data (i32.const 648) "158") + (data (i32.const 652) "159") + (data (i32.const 656) "160") + (data (i32.const 660) "161") + (data (i32.const 664) "162") + (data (i32.const 668) "163") + (data (i32.const 672) "164") + (data (i32.const 676) "165") + (data (i32.const 680) "166") + (data (i32.const 684) "167") + (data (i32.const 688) "168") + (data (i32.const 692) "169") + (data (i32.const 696) "170") + (data (i32.const 700) "171") + (data (i32.const 704) "172") + (data (i32.const 708) "173") + (data (i32.const 712) "174") + (data (i32.const 716) "175") + (data (i32.const 720) "176") + (data (i32.const 724) "177") + (data (i32.const 728) "178") + (data (i32.const 732) "179") + (data (i32.const 736) "180") + (data (i32.const 740) "181") + (data (i32.const 744) "182") + (data (i32.const 748) "183") + (data (i32.const 752) "184") + (data (i32.const 756) "185") + (data (i32.const 760) "186") + (data (i32.const 764) "187") + (data (i32.const 768) "188") + (data (i32.const 772) "189") + (data (i32.const 776) "190") + (data (i32.const 780) "191") + (data (i32.const 784) "192") + (data (i32.const 788) "193") + (data (i32.const 792) "194") + (data (i32.const 796) "195") + (data (i32.const 800) "196") + (data (i32.const 804) "197") + (data (i32.const 808) "198") + (data (i32.const 812) "199") + (data (i32.const 816) "200") + (data (i32.const 820) "201") + (data (i32.const 824) "202") + (data (i32.const 828) "203") + (data (i32.const 832) "204") + (data (i32.const 836) "205") + (data (i32.const 840) "206") + (data (i32.const 844) "207") + (data (i32.const 848) "208") + (data (i32.const 852) "209") + (data (i32.const 856) "210") + (data (i32.const 860) "211") + (data (i32.const 864) "212") + (data (i32.const 868) "213") + (data (i32.const 872) "214") + (data (i32.const 876) "215") + (data (i32.const 880) "216") + (data (i32.const 884) "217") + (data (i32.const 888) "218") + (data (i32.const 892) "219") + (data (i32.const 896) "220") + (data (i32.const 900) "221") + (data (i32.const 904) "222") + (data (i32.const 908) "223") + (data (i32.const 912) "224") + (data (i32.const 916) "225") + (data (i32.const 920) "226") + (data (i32.const 924) "227") + (data (i32.const 928) "228") + (data (i32.const 932) "229") + (data (i32.const 936) "230") + (data (i32.const 940) "231") + (data (i32.const 944) "232") + (data (i32.const 948) "233") + (data (i32.const 952) "234") + (data (i32.const 956) "235") + (data (i32.const 960) "236") + (data (i32.const 964) "237") + (data (i32.const 968) "238") + (data (i32.const 972) "239") + (data (i32.const 976) "240") + (data (i32.const 980) "241") + (data (i32.const 984) "242") + (data (i32.const 988) "243") + (data (i32.const 992) "244") + (data (i32.const 996) "245") + (data (i32.const 1000) "246") + (data (i32.const 1004) "247") + (data (i32.const 1008) "248") + (data (i32.const 1012) "249") + (data (i32.const 1016) "250") + (data (i32.const 1020) "251") + (data (i32.const 1024) "252") + (data (i32.const 1028) "253") + (data (i32.const 1032) "254") + (data (i32.const 1036) "255") + (data (i32.const 1040) "256") + (data (i32.const 1044) "257") + (data (i32.const 1048) "258") + (data (i32.const 1052) "259") + (data (i32.const 1056) "260") + (data (i32.const 1060) "261") + (data (i32.const 1064) "262") + (data (i32.const 1068) "263") + (data (i32.const 1072) "264") + (data (i32.const 1076) "265") + (data (i32.const 1080) "266") + (data (i32.const 1084) "267") + (data (i32.const 1088) "268") + (data (i32.const 1092) "269") + (data (i32.const 1096) "270") + (data (i32.const 1100) "271") + (data (i32.const 1104) "272") + (data (i32.const 1108) "273") + (data (i32.const 1112) "274") + (data (i32.const 1116) "275") + (data (i32.const 1120) "276") + (data (i32.const 1124) "277") + (data (i32.const 1128) "278") + (data (i32.const 1132) "279") + (data (i32.const 1136) "280") + (data (i32.const 1140) "281") + (data (i32.const 1144) "282") + (data (i32.const 1148) "283") + (data (i32.const 1152) "284") + (data (i32.const 1156) "285") + (data (i32.const 1160) "286") + (data (i32.const 1164) "287") + (data (i32.const 1168) "288") + (data (i32.const 1172) "289") + (data (i32.const 1176) "290") + (data (i32.const 1180) "291") + (data (i32.const 1184) "292") + (data (i32.const 1188) "293") + (data (i32.const 1192) "294") + (data (i32.const 1196) "295") + (data (i32.const 1200) "296") + (data (i32.const 1204) "297") + (data (i32.const 1208) "298") + (data (i32.const 1212) "299") + (data (i32.const 1216) "300") + (data (i32.const 1220) "301") + (data (i32.const 1224) "302") + (data (i32.const 1228) "303") + (data (i32.const 1232) "304") + (data (i32.const 1236) "305") + (data (i32.const 1240) "306") + (data (i32.const 1244) "307") + (data (i32.const 1248) "308") + (data (i32.const 1252) "309") + (data (i32.const 1256) "310") + (data (i32.const 1260) "311") + (data (i32.const 1264) "312") + (data (i32.const 1268) "313") + (data (i32.const 1272) "314") + (data (i32.const 1276) "315") + (data (i32.const 1280) "316") + (data (i32.const 1284) "317") + (data (i32.const 1288) "318") + (data (i32.const 1292) "319") + (data (i32.const 1296) "320") + (data (i32.const 1300) "321") + (data (i32.const 1304) "322") + (data (i32.const 1308) "323") + (data (i32.const 1312) "324") + (data (i32.const 1316) "325") + (data (i32.const 1320) "326") + (data (i32.const 1324) "327") + (data (i32.const 1328) "328") + (data (i32.const 1332) "329") + (data (i32.const 1336) "330") + (data (i32.const 1340) "331") + (data (i32.const 1344) "332") + (data (i32.const 1348) "333") + (data (i32.const 1352) "334") + (data (i32.const 1356) "335") + (data (i32.const 1360) "336") + (data (i32.const 1364) "337") + (data (i32.const 1368) "338") + (data (i32.const 1372) "339") + (data (i32.const 1376) "340") + (data (i32.const 1380) "341") + (data (i32.const 1384) "342") + (data (i32.const 1388) "343") + (data (i32.const 1392) "344") + (data (i32.const 1396) "345") + (data (i32.const 1400) "346") + (data (i32.const 1404) "347") + (data (i32.const 1408) "348") + (data (i32.const 1412) "349") + (data (i32.const 1416) "350") + (data (i32.const 1420) "351") + (data (i32.const 1424) "352") + (data (i32.const 1428) "353") + (data (i32.const 1432) "354") + (data (i32.const 1436) "355") + (data (i32.const 1440) "356") + (data (i32.const 1444) "357") + (data (i32.const 1448) "358") + (data (i32.const 1452) "359") + (data (i32.const 1456) "360") + (export "abs" (func $abs)) + (export "neg" (func $neg)) + (export "copysign" (func $copysign)) + (export "is_nanf" (func $is_nanf)) + (export "apply" (func $apply)) + (export "assert_return" (func $assert_return)) + (export "assert_return_nan" (func $assert_return_nan)) + (func $assert_return (param $0 f32) (param $1 f32 ) (param $2 i32) (call $eosio_assert(i32.eq (i32.reinterpret/f32 (get_local $0)) (i32.reinterpret/f32 (get_local $1))) (get_local $2))) + (func $is_nanf (param $0 f32) (result i32) + (i32.gt_u + (i32.and + (i32.reinterpret/f32 + (get_local $0) + ) + (i32.const 2147483647) + ) + (i32.const 2139095040) + ) + ) + (func $assert_return_nan (param $0 f32) (param $1 i32)( call $eosio_assert (call $is_nanf (get_local $0)) (get_local $1))) + (func $abs (param $0 f32) (result f32) (f32.abs (get_local $0))) + (func $neg (param $0 f32) (result f32) (f32.neg (get_local $0))) + (func $copysign (param $0 f32) (param $1 f32) (result f32) (f32.copysign (get_local $0) (get_local $1))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 20)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 24)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0) (i32.const 28)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 32)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 36)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 40)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0) (i32.const 44)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0) (i32.const 48)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 52)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 56)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0) (i32.const 60)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0) (i32.const 64)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 68)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 72)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0) (i32.const 76)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0) (i32.const 80)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0) (i32.const 84)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 88)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0) (i32.const 92)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0) (i32.const 96)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 100)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 104)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0) (i32.const 108)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0) (i32.const 112)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 116)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 120)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0) (i32.const 124)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0) (i32.const 128)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 132)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const inf)) (f32.const 0x0p+0) (i32.const 136)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -inf)) (f32.const -0x0p+0) (i32.const 140)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const inf)) (f32.const 0x0p+0) (i32.const 144)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const -nan)) (f32.const -0x0p+0) (i32.const 148)) + (call $assert_return (call $copysign (f32.const -0x0p+0) (f32.const nan)) (f32.const 0x0p+0) (i32.const 152)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const -nan)) (f32.const -0x0p+0) (i32.const 156)) + (call $assert_return (call $copysign (f32.const 0x0p+0) (f32.const nan)) (f32.const 0x0p+0) (i32.const 160)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149) (i32.const 164)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149) (i32.const 168)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149) (i32.const 172)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149) (i32.const 176)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 180)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 184)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 188)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 192)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149) (i32.const 196)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149) (i32.const 200)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149) (i32.const 204)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149) (i32.const 208)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149) (i32.const 212)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149) (i32.const 216)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149) (i32.const 220)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149) (i32.const 224)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149) (i32.const 228)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149) (i32.const 232)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149) (i32.const 236)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149) (i32.const 240)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149) (i32.const 244)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149) (i32.const 248)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149) (i32.const 252)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149) (i32.const 256)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149) (i32.const 260)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149) (i32.const 264)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149) (i32.const 268)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149) (i32.const 272)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -inf)) (f32.const -0x1p-149) (i32.const 276)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const inf)) (f32.const 0x1p-149) (i32.const 280)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -inf)) (f32.const -0x1p-149) (i32.const 284)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const inf)) (f32.const 0x1p-149) (i32.const 288)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const -nan)) (f32.const -0x1p-149) (i32.const 292)) + (call $assert_return (call $copysign (f32.const -0x1p-149) (f32.const nan)) (f32.const 0x1p-149) (i32.const 296)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const -nan)) (f32.const -0x1p-149) (i32.const 300)) + (call $assert_return (call $copysign (f32.const 0x1p-149) (f32.const nan)) (f32.const 0x1p-149) (i32.const 304)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126) (i32.const 308)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126) (i32.const 312)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126) (i32.const 316)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126) (i32.const 320)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126) (i32.const 324)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126) (i32.const 328)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126) (i32.const 332)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126) (i32.const 336)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 340)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 344)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126) (i32.const 348)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 352)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126) (i32.const 356)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126) (i32.const 360)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126) (i32.const 364)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126) (i32.const 368)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126) (i32.const 372)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126) (i32.const 376)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126) (i32.const 380)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126) (i32.const 384)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126) (i32.const 388)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126) (i32.const 392)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126) (i32.const 396)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126) (i32.const 400)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126) (i32.const 404)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126) (i32.const 408)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126) (i32.const 412)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126) (i32.const 416)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -inf)) (f32.const -0x1p-126) (i32.const 420)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const inf)) (f32.const 0x1p-126) (i32.const 424)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -inf)) (f32.const -0x1p-126) (i32.const 428)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const inf)) (f32.const 0x1p-126) (i32.const 432)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const -nan)) (f32.const -0x1p-126) (i32.const 436)) + (call $assert_return (call $copysign (f32.const -0x1p-126) (f32.const nan)) (f32.const 0x1p-126) (i32.const 440)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const -nan)) (f32.const -0x1p-126) (i32.const 444)) + (call $assert_return (call $copysign (f32.const 0x1p-126) (f32.const nan)) (f32.const 0x1p-126) (i32.const 448)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1) (i32.const 452)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1) (i32.const 456)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1) (i32.const 460)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1) (i32.const 464)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1) (i32.const 468)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1) (i32.const 472)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1) (i32.const 476)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1) (i32.const 480)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1) (i32.const 484)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1) (i32.const 488)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1) (i32.const 492)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1) (i32.const 496)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 500)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 504)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1) (i32.const 508)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 512)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1) (i32.const 516)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1) (i32.const 520)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1) (i32.const 524)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1) (i32.const 528)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1) (i32.const 532)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1) (i32.const 536)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1) (i32.const 540)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1) (i32.const 544)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1) (i32.const 548)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1) (i32.const 552)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1) (i32.const 556)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1) (i32.const 560)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -inf)) (f32.const -0x1p-1) (i32.const 564)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const inf)) (f32.const 0x1p-1) (i32.const 568)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -inf)) (f32.const -0x1p-1) (i32.const 572)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const inf)) (f32.const 0x1p-1) (i32.const 576)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const -nan)) (f32.const -0x1p-1) (i32.const 580)) + (call $assert_return (call $copysign (f32.const -0x1p-1) (f32.const nan)) (f32.const 0x1p-1) (i32.const 584)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const -nan)) (f32.const -0x1p-1) (i32.const 588)) + (call $assert_return (call $copysign (f32.const 0x1p-1) (f32.const nan)) (f32.const 0x1p-1) (i32.const 592)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0) (i32.const 596)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0) (i32.const 600)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0) (i32.const 604)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0) (i32.const 608)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 612)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 616)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0) (i32.const 620)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0) (i32.const 624)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 628)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 632)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0) (i32.const 636)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0) (i32.const 640)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0) (i32.const 644)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0) (i32.const 648)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0) (i32.const 652)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0) (i32.const 656)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 660)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 664)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0) (i32.const 668)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 672)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0) (i32.const 676)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0) (i32.const 680)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0) (i32.const 684)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0) (i32.const 688)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0) (i32.const 692)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0) (i32.const 696)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0) (i32.const 700)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0) (i32.const 704)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -inf)) (f32.const -0x1p+0) (i32.const 708)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const inf)) (f32.const 0x1p+0) (i32.const 712)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -inf)) (f32.const -0x1p+0) (i32.const 716)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const inf)) (f32.const 0x1p+0) (i32.const 720)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const -nan)) (f32.const -0x1p+0) (i32.const 724)) + (call $assert_return (call $copysign (f32.const -0x1p+0) (f32.const nan)) (f32.const 0x1p+0) (i32.const 728)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const -nan)) (f32.const -0x1p+0) (i32.const 732)) + (call $assert_return (call $copysign (f32.const 0x1p+0) (f32.const nan)) (f32.const 0x1p+0) (i32.const 736)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 740)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 744)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2) (i32.const 748)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2) (i32.const 752)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 756)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 760)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2) (i32.const 764)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2) (i32.const 768)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 772)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 776)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2) (i32.const 780)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2) (i32.const 784)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2) (i32.const 788)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2) (i32.const 792)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2) (i32.const 796)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2) (i32.const 800)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 804)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 808)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2) (i32.const 812)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2) (i32.const 816)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 820)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 824)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 828)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 832)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2) (i32.const 836)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2) (i32.const 840)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2) (i32.const 844)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2) (i32.const 848)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x1.921fb6p+2) (i32.const 852)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const 0x1.921fb6p+2) (i32.const 856)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x1.921fb6p+2) (i32.const 860)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const 0x1.921fb6p+2) (i32.const 864)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -0x1.921fb6p+2) (i32.const 868)) + (call $assert_return (call $copysign (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const 0x1.921fb6p+2) (i32.const 872)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -0x1.921fb6p+2) (i32.const 876)) + (call $assert_return (call $copysign (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const 0x1.921fb6p+2) (i32.const 880)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 884)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 888)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127) (i32.const 892)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127) (i32.const 896)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 900)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 904)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127) (i32.const 908)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127) (i32.const 912)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 916)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 920)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127) (i32.const 924)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127) (i32.const 928)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 932)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 936)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127) (i32.const 940)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127) (i32.const 944)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 948)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 952)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127) (i32.const 956)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127) (i32.const 960)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 964)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 968)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127) (i32.const 972)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127) (i32.const 976)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 980)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 984)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 988)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 992)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -0x1.fffffep+127) (i32.const 996)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const 0x1.fffffep+127) (i32.const 1000)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -0x1.fffffep+127) (i32.const 1004)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const 0x1.fffffep+127) (i32.const 1008)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -0x1.fffffep+127) (i32.const 1012)) + (call $assert_return (call $copysign (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const 0x1.fffffep+127) (i32.const 1016)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -0x1.fffffep+127) (i32.const 1020)) + (call $assert_return (call $copysign (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const 0x1.fffffep+127) (i32.const 1024)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 1028)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x0p+0)) (f32.const inf) (i32.const 1032)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x0p+0)) (f32.const -inf) (i32.const 1036)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x0p+0)) (f32.const inf) (i32.const 1040)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 1044)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 1048)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x1p-149)) (f32.const -inf) (i32.const 1052)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x1p-149)) (f32.const inf) (i32.const 1056)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 1060)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 1064)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x1p-126)) (f32.const -inf) (i32.const 1068)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x1p-126)) (f32.const inf) (i32.const 1072)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 1076)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 1080)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x1p-1)) (f32.const -inf) (i32.const 1084)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x1p-1)) (f32.const inf) (i32.const 1088)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 1092)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 1096)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x1p+0)) (f32.const -inf) (i32.const 1100)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x1p+0)) (f32.const inf) (i32.const 1104)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 1108)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 1112)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf) (i32.const 1116)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf) (i32.const 1120)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 1124)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 1128)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -inf) (i32.const 1132)) + (call $assert_return (call $copysign (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf) (i32.const 1136)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -inf)) (f32.const -inf) (i32.const 1140)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const inf)) (f32.const inf) (i32.const 1144)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -inf)) (f32.const -inf) (i32.const 1148)) + (call $assert_return (call $copysign (f32.const inf) (f32.const inf)) (f32.const inf) (i32.const 1152)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const -nan)) (f32.const -inf) (i32.const 1156)) + (call $assert_return (call $copysign (f32.const -inf) (f32.const nan)) (f32.const inf) (i32.const 1160)) + (call $assert_return (call $copysign (f32.const inf) (f32.const -nan)) (f32.const -inf) (i32.const 1164)) + (call $assert_return (call $copysign (f32.const inf) (f32.const nan)) (f32.const inf) (i32.const 1168)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan) (i32.const 1172)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x0p+0)) (f32.const nan) (i32.const 1176)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x0p+0)) (f32.const -nan) (i32.const 1180)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x0p+0)) (f32.const nan) (i32.const 1184)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan) (i32.const 1188)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x1p-149)) (f32.const nan) (i32.const 1192)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x1p-149)) (f32.const -nan) (i32.const 1196)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x1p-149)) (f32.const nan) (i32.const 1200)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan) (i32.const 1204)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x1p-126)) (f32.const nan) (i32.const 1208)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x1p-126)) (f32.const -nan) (i32.const 1212)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x1p-126)) (f32.const nan) (i32.const 1216)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan) (i32.const 1220)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x1p-1)) (f32.const nan) (i32.const 1224)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x1p-1)) (f32.const -nan) (i32.const 1228)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x1p-1)) (f32.const nan) (i32.const 1232)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan) (i32.const 1236)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x1p+0)) (f32.const nan) (i32.const 1240)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x1p+0)) (f32.const -nan) (i32.const 1244)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x1p+0)) (f32.const nan) (i32.const 1248)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan) (i32.const 1252)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const nan) (i32.const 1256)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan) (i32.const 1260)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan) (i32.const 1264)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan) (i32.const 1268)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const nan) (i32.const 1272)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const -nan) (i32.const 1276)) + (call $assert_return (call $copysign (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan) (i32.const 1280)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -inf)) (f32.const -nan) (i32.const 1284)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const inf)) (f32.const nan) (i32.const 1288)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -inf)) (f32.const -nan) (i32.const 1292)) + (call $assert_return (call $copysign (f32.const nan) (f32.const inf)) (f32.const nan) (i32.const 1296)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const -nan)) (f32.const -nan) (i32.const 1300)) + (call $assert_return (call $copysign (f32.const -nan) (f32.const nan)) (f32.const nan) (i32.const 1304)) + (call $assert_return (call $copysign (f32.const nan) (f32.const -nan)) (f32.const -nan) (i32.const 1308)) + (call $assert_return (call $copysign (f32.const nan) (f32.const nan)) (f32.const nan) (i32.const 1312)) + (call $assert_return (call $abs (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 1316)) + (call $assert_return (call $abs (f32.const 0x0p+0)) (f32.const 0x0p+0) (i32.const 1320)) + (call $assert_return (call $abs (f32.const -0x1p-149)) (f32.const 0x1p-149) (i32.const 1324)) + (call $assert_return (call $abs (f32.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 1328)) + (call $assert_return (call $abs (f32.const -0x1p-126)) (f32.const 0x1p-126) (i32.const 1332)) + (call $assert_return (call $abs (f32.const 0x1p-126)) (f32.const 0x1p-126) (i32.const 1336)) + (call $assert_return (call $abs (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1340)) + (call $assert_return (call $abs (f32.const 0x1p-1)) (f32.const 0x1p-1) (i32.const 1344)) + (call $assert_return (call $abs (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 1348)) + (call $assert_return (call $abs (f32.const 0x1p+0)) (f32.const 0x1p+0) (i32.const 1352)) + (call $assert_return (call $abs (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1356)) + (call $assert_return (call $abs (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1360)) + (call $assert_return (call $abs (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1364)) + (call $assert_return (call $abs (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1368)) + (call $assert_return (call $abs (f32.const -inf)) (f32.const inf) (i32.const 1372)) + (call $assert_return (call $abs (f32.const inf)) (f32.const inf) (i32.const 1376)) + (call $assert_return (call $abs (f32.const -nan)) (f32.const nan) (i32.const 1380)) + (call $assert_return (call $abs (f32.const nan)) (f32.const nan) (i32.const 1384)) + (call $assert_return (call $neg (f32.const -0x0p+0)) (f32.const 0x0p+0) (i32.const 1388)) + (call $assert_return (call $neg (f32.const 0x0p+0)) (f32.const -0x0p+0) (i32.const 1392)) + (call $assert_return (call $neg (f32.const -0x1p-149)) (f32.const 0x1p-149) (i32.const 1396)) + (call $assert_return (call $neg (f32.const 0x1p-149)) (f32.const -0x1p-149) (i32.const 1400)) + (call $assert_return (call $neg (f32.const -0x1p-126)) (f32.const 0x1p-126) (i32.const 1404)) + (call $assert_return (call $neg (f32.const 0x1p-126)) (f32.const -0x1p-126) (i32.const 1408)) + (call $assert_return (call $neg (f32.const -0x1p-1)) (f32.const 0x1p-1) (i32.const 1412)) + (call $assert_return (call $neg (f32.const 0x1p-1)) (f32.const -0x1p-1) (i32.const 1416)) + (call $assert_return (call $neg (f32.const -0x1p+0)) (f32.const 0x1p+0) (i32.const 1420)) + (call $assert_return (call $neg (f32.const 0x1p+0)) (f32.const -0x1p+0) (i32.const 1424)) + (call $assert_return (call $neg (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2) (i32.const 1428)) + (call $assert_return (call $neg (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2) (i32.const 1432)) + (call $assert_return (call $neg (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 1436)) + (call $assert_return (call $neg (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 1440)) + (call $assert_return (call $neg (f32.const -inf)) (f32.const inf) (i32.const 1444)) + (call $assert_return (call $neg (f32.const inf)) (f32.const -inf) (i32.const 1448)) + (call $assert_return (call $neg (f32.const -nan)) (f32.const nan) (i32.const 1452)) + (call $assert_return (call $neg (f32.const nan)) (f32.const -nan) (i32.const 1456)) +)) +)====="; +static const char f64_test_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (data (i32.const 292) "69") + (data (i32.const 296) "70") + (data (i32.const 300) "71") + (data (i32.const 304) "72") + (data (i32.const 308) "73") + (data (i32.const 312) "74") + (data (i32.const 316) "75") + (data (i32.const 320) "76") + (data (i32.const 324) "77") + (data (i32.const 328) "78") + (data (i32.const 332) "79") + (data (i32.const 336) "80") + (data (i32.const 340) "81") + (data (i32.const 344) "82") + (data (i32.const 348) "83") + (data (i32.const 352) "84") + (data (i32.const 356) "85") + (data (i32.const 360) "86") + (data (i32.const 364) "87") + (data (i32.const 368) "88") + (data (i32.const 372) "89") + (data (i32.const 376) "90") + (data (i32.const 380) "91") + (data (i32.const 384) "92") + (data (i32.const 388) "93") + (data (i32.const 392) "94") + (data (i32.const 396) "95") + (data (i32.const 400) "96") + (data (i32.const 404) "97") + (data (i32.const 408) "98") + (data (i32.const 412) "99") + (data (i32.const 416) "100") + (data (i32.const 420) "101") + (data (i32.const 424) "102") + (data (i32.const 428) "103") + (data (i32.const 432) "104") + (data (i32.const 436) "105") + (data (i32.const 440) "106") + (data (i32.const 444) "107") + (data (i32.const 448) "108") + (data (i32.const 452) "109") + (data (i32.const 456) "110") + (data (i32.const 460) "111") + (data (i32.const 464) "112") + (data (i32.const 468) "113") + (data (i32.const 472) "114") + (data (i32.const 476) "115") + (data (i32.const 480) "116") + (data (i32.const 484) "117") + (data (i32.const 488) "118") + (data (i32.const 492) "119") + (data (i32.const 496) "120") + (data (i32.const 500) "121") + (data (i32.const 504) "122") + (data (i32.const 508) "123") + (data (i32.const 512) "124") + (data (i32.const 516) "125") + (data (i32.const 520) "126") + (data (i32.const 524) "127") + (data (i32.const 528) "128") + (data (i32.const 532) "129") + (data (i32.const 536) "130") + (data (i32.const 540) "131") + (data (i32.const 544) "132") + (data (i32.const 548) "133") + (data (i32.const 552) "134") + (data (i32.const 556) "135") + (data (i32.const 560) "136") + (data (i32.const 564) "137") + (data (i32.const 568) "138") + (data (i32.const 572) "139") + (data (i32.const 576) "140") + (data (i32.const 580) "141") + (data (i32.const 584) "142") + (data (i32.const 588) "143") + (data (i32.const 592) "144") + (data (i32.const 596) "145") + (data (i32.const 600) "146") + (data (i32.const 604) "147") + (data (i32.const 608) "148") + (data (i32.const 612) "149") + (data (i32.const 616) "150") + (data (i32.const 620) "151") + (data (i32.const 624) "152") + (data (i32.const 628) "153") + (data (i32.const 632) "154") + (data (i32.const 636) "155") + (data (i32.const 640) "156") + (data (i32.const 644) "157") + (data (i32.const 648) "158") + (data (i32.const 652) "159") + (data (i32.const 656) "160") + (data (i32.const 660) "161") + (data (i32.const 664) "162") + (data (i32.const 668) "163") + (data (i32.const 672) "164") + (data (i32.const 676) "165") + (data (i32.const 680) "166") + (data (i32.const 684) "167") + (data (i32.const 688) "168") + (data (i32.const 692) "169") + (data (i32.const 696) "170") + (data (i32.const 700) "171") + (data (i32.const 704) "172") + (data (i32.const 708) "173") + (data (i32.const 712) "174") + (data (i32.const 716) "175") + (data (i32.const 720) "176") + (data (i32.const 724) "177") + (data (i32.const 728) "178") + (data (i32.const 732) "179") + (data (i32.const 736) "180") + (data (i32.const 740) "181") + (data (i32.const 744) "182") + (data (i32.const 748) "183") + (data (i32.const 752) "184") + (data (i32.const 756) "185") + (data (i32.const 760) "186") + (data (i32.const 764) "187") + (data (i32.const 768) "188") + (data (i32.const 772) "189") + (data (i32.const 776) "190") + (data (i32.const 780) "191") + (data (i32.const 784) "192") + (data (i32.const 788) "193") + (data (i32.const 792) "194") + (data (i32.const 796) "195") + (data (i32.const 800) "196") + (data (i32.const 804) "197") + (data (i32.const 808) "198") + (data (i32.const 812) "199") + (data (i32.const 816) "200") + (data (i32.const 820) "201") + (data (i32.const 824) "202") + (data (i32.const 828) "203") + (data (i32.const 832) "204") + (data (i32.const 836) "205") + (data (i32.const 840) "206") + (data (i32.const 844) "207") + (data (i32.const 848) "208") + (data (i32.const 852) "209") + (data (i32.const 856) "210") + (data (i32.const 860) "211") + (data (i32.const 864) "212") + (data (i32.const 868) "213") + (data (i32.const 872) "214") + (data (i32.const 876) "215") + (data (i32.const 880) "216") + (data (i32.const 884) "217") + (data (i32.const 888) "218") + (data (i32.const 892) "219") + (data (i32.const 896) "220") + (data (i32.const 900) "221") + (data (i32.const 904) "222") + (data (i32.const 908) "223") + (data (i32.const 912) "224") + (data (i32.const 916) "225") + (data (i32.const 920) "226") + (data (i32.const 924) "227") + (data (i32.const 928) "228") + (data (i32.const 932) "229") + (data (i32.const 936) "230") + (data (i32.const 940) "231") + (data (i32.const 944) "232") + (data (i32.const 948) "233") + (data (i32.const 952) "234") + (data (i32.const 956) "235") + (data (i32.const 960) "236") + (data (i32.const 964) "237") + (data (i32.const 968) "238") + (data (i32.const 972) "239") + (data (i32.const 976) "240") + (data (i32.const 980) "241") + (data (i32.const 984) "242") + (data (i32.const 988) "243") + (data (i32.const 992) "244") + (data (i32.const 996) "245") + (data (i32.const 1000) "246") + (data (i32.const 1004) "247") + (data (i32.const 1008) "248") + (data (i32.const 1012) "249") + (data (i32.const 1016) "250") + (data (i32.const 1020) "251") + (data (i32.const 1024) "252") + (data (i32.const 1028) "253") + (data (i32.const 1032) "254") + (data (i32.const 1036) "255") + (data (i32.const 1040) "256") + (data (i32.const 1044) "257") + (data (i32.const 1048) "258") + (data (i32.const 1052) "259") + (data (i32.const 1056) "260") + (data (i32.const 1060) "261") + (data (i32.const 1064) "262") + (data (i32.const 1068) "263") + (data (i32.const 1072) "264") + (data (i32.const 1076) "265") + (data (i32.const 1080) "266") + (data (i32.const 1084) "267") + (data (i32.const 1088) "268") + (data (i32.const 1092) "269") + (data (i32.const 1096) "270") + (data (i32.const 1100) "271") + (data (i32.const 1104) "272") + (data (i32.const 1108) "273") + (data (i32.const 1112) "274") + (data (i32.const 1116) "275") + (data (i32.const 1120) "276") + (data (i32.const 1124) "277") + (data (i32.const 1128) "278") + (data (i32.const 1132) "279") + (data (i32.const 1136) "280") + (data (i32.const 1140) "281") + (data (i32.const 1144) "282") + (data (i32.const 1148) "283") + (data (i32.const 1152) "284") + (data (i32.const 1156) "285") + (data (i32.const 1160) "286") + (data (i32.const 1164) "287") + (data (i32.const 1168) "288") + (data (i32.const 1172) "289") + (data (i32.const 1176) "290") + (data (i32.const 1180) "291") + (data (i32.const 1184) "292") + (data (i32.const 1188) "293") + (data (i32.const 1192) "294") + (data (i32.const 1196) "295") + (data (i32.const 1200) "296") + (data (i32.const 1204) "297") + (data (i32.const 1208) "298") + (data (i32.const 1212) "299") + (data (i32.const 1216) "300") + (data (i32.const 1220) "301") + (data (i32.const 1224) "302") + (data (i32.const 1228) "303") + (data (i32.const 1232) "304") + (data (i32.const 1236) "305") + (data (i32.const 1240) "306") + (data (i32.const 1244) "307") + (data (i32.const 1248) "308") + (data (i32.const 1252) "309") + (data (i32.const 1256) "310") + (data (i32.const 1260) "311") + (data (i32.const 1264) "312") + (data (i32.const 1268) "313") + (data (i32.const 1272) "314") + (data (i32.const 1276) "315") + (data (i32.const 1280) "316") + (data (i32.const 1284) "317") + (data (i32.const 1288) "318") + (data (i32.const 1292) "319") + (data (i32.const 1296) "320") + (data (i32.const 1300) "321") + (data (i32.const 1304) "322") + (data (i32.const 1308) "323") + (data (i32.const 1312) "324") + (data (i32.const 1316) "325") + (data (i32.const 1320) "326") + (data (i32.const 1324) "327") + (data (i32.const 1328) "328") + (data (i32.const 1332) "329") + (data (i32.const 1336) "330") + (data (i32.const 1340) "331") + (data (i32.const 1344) "332") + (data (i32.const 1348) "333") + (data (i32.const 1352) "334") + (data (i32.const 1356) "335") + (data (i32.const 1360) "336") + (data (i32.const 1364) "337") + (data (i32.const 1368) "338") + (data (i32.const 1372) "339") + (data (i32.const 1376) "340") + (data (i32.const 1380) "341") + (data (i32.const 1384) "342") + (data (i32.const 1388) "343") + (data (i32.const 1392) "344") + (data (i32.const 1396) "345") + (data (i32.const 1400) "346") + (data (i32.const 1404) "347") + (data (i32.const 1408) "348") + (data (i32.const 1412) "349") + (data (i32.const 1416) "350") + (data (i32.const 1420) "351") + (data (i32.const 1424) "352") + (data (i32.const 1428) "353") + (data (i32.const 1432) "354") + (data (i32.const 1436) "355") + (data (i32.const 1440) "356") + (data (i32.const 1444) "357") + (data (i32.const 1448) "358") + (data (i32.const 1452) "359") + (data (i32.const 1456) "360") + (data (i32.const 1460) "361") + (data (i32.const 1464) "362") + (data (i32.const 1468) "363") + (data (i32.const 1472) "364") + (data (i32.const 1476) "365") + (data (i32.const 1480) "366") + (data (i32.const 1484) "367") + (data (i32.const 1488) "368") + (data (i32.const 1492) "369") + (data (i32.const 1496) "370") + (data (i32.const 1500) "371") + (data (i32.const 1504) "372") + (data (i32.const 1508) "373") + (data (i32.const 1512) "374") + (data (i32.const 1516) "375") + (data (i32.const 1520) "376") + (data (i32.const 1524) "377") + (data (i32.const 1528) "378") + (data (i32.const 1532) "379") + (data (i32.const 1536) "380") + (data (i32.const 1540) "381") + (data (i32.const 1544) "382") + (data (i32.const 1548) "383") + (data (i32.const 1552) "384") + (data (i32.const 1556) "385") + (data (i32.const 1560) "386") + (data (i32.const 1564) "387") + (data (i32.const 1568) "388") + (data (i32.const 1572) "389") + (data (i32.const 1576) "390") + (data (i32.const 1580) "391") + (data (i32.const 1584) "392") + (data (i32.const 1588) "393") + (data (i32.const 1592) "394") + (data (i32.const 1596) "395") + (data (i32.const 1600) "396") + (data (i32.const 1604) "397") + (data (i32.const 1608) "398") + (data (i32.const 1612) "399") + (data (i32.const 1616) "400") + (data (i32.const 1620) "401") + (data (i32.const 1624) "402") + (data (i32.const 1628) "403") + (data (i32.const 1632) "404") + (data (i32.const 1636) "405") + (data (i32.const 1640) "406") + (data (i32.const 1644) "407") + (data (i32.const 1648) "408") + (data (i32.const 1652) "409") + (data (i32.const 1656) "410") + (data (i32.const 1660) "411") + (data (i32.const 1664) "412") + (data (i32.const 1668) "413") + (data (i32.const 1672) "414") + (data (i32.const 1676) "415") + (data (i32.const 1680) "416") + (data (i32.const 1684) "417") + (data (i32.const 1688) "418") + (data (i32.const 1692) "419") + (data (i32.const 1696) "420") + (data (i32.const 1700) "421") + (data (i32.const 1704) "422") + (data (i32.const 1708) "423") + (data (i32.const 1712) "424") + (data (i32.const 1716) "425") + (data (i32.const 1720) "426") + (data (i32.const 1724) "427") + (data (i32.const 1728) "428") + (data (i32.const 1732) "429") + (data (i32.const 1736) "430") + (data (i32.const 1740) "431") + (data (i32.const 1744) "432") + (data (i32.const 1748) "433") + (data (i32.const 1752) "434") + (data (i32.const 1756) "435") + (data (i32.const 1760) "436") + (data (i32.const 1764) "437") + (data (i32.const 1768) "438") + (data (i32.const 1772) "439") + (data (i32.const 1776) "440") + (data (i32.const 1780) "441") + (data (i32.const 1784) "442") + (data (i32.const 1788) "443") + (data (i32.const 1792) "444") + (data (i32.const 1796) "445") + (data (i32.const 1800) "446") + (data (i32.const 1804) "447") + (data (i32.const 1808) "448") + (data (i32.const 1812) "449") + (data (i32.const 1816) "450") + (data (i32.const 1820) "451") + (data (i32.const 1824) "452") + (data (i32.const 1828) "453") + (data (i32.const 1832) "454") + (data (i32.const 1836) "455") + (data (i32.const 1840) "456") + (data (i32.const 1844) "457") + (data (i32.const 1848) "458") + (data (i32.const 1852) "459") + (data (i32.const 1856) "460") + (data (i32.const 1860) "461") + (data (i32.const 1864) "462") + (data (i32.const 1868) "463") + (data (i32.const 1872) "464") + (data (i32.const 1876) "465") + (data (i32.const 1880) "466") + (data (i32.const 1884) "467") + (data (i32.const 1888) "468") + (data (i32.const 1892) "469") + (data (i32.const 1896) "470") + (data (i32.const 1900) "471") + (data (i32.const 1904) "472") + (data (i32.const 1908) "473") + (data (i32.const 1912) "474") + (data (i32.const 1916) "475") + (data (i32.const 1920) "476") + (data (i32.const 1924) "477") + (data (i32.const 1928) "478") + (data (i32.const 1932) "479") + (data (i32.const 1936) "480") + (data (i32.const 1940) "481") + (data (i32.const 1944) "482") + (data (i32.const 1948) "483") + (data (i32.const 1952) "484") + (data (i32.const 1956) "485") + (data (i32.const 1960) "486") + (data (i32.const 1964) "487") + (data (i32.const 1968) "488") + (data (i32.const 1972) "489") + (data (i32.const 1976) "490") + (data (i32.const 1980) "491") + (data (i32.const 1984) "492") + (data (i32.const 1988) "493") + (data (i32.const 1992) "494") + (data (i32.const 1996) "495") + (data (i32.const 2000) "496") + (data (i32.const 2004) "497") + (data (i32.const 2008) "498") + (data (i32.const 2012) "499") + (data (i32.const 2016) "500") + (data (i32.const 2020) "501") + (data (i32.const 2024) "502") + (data (i32.const 2028) "503") + (data (i32.const 2032) "504") + (data (i32.const 2036) "505") + (data (i32.const 2040) "506") + (data (i32.const 2044) "507") + (data (i32.const 2048) "508") + (data (i32.const 2052) "509") + (data (i32.const 2056) "510") + (data (i32.const 2060) "511") + (data (i32.const 2064) "512") + (data (i32.const 2068) "513") + (data (i32.const 2072) "514") + (data (i32.const 2076) "515") + (data (i32.const 2080) "516") + (data (i32.const 2084) "517") + (data (i32.const 2088) "518") + (data (i32.const 2092) "519") + (data (i32.const 2096) "520") + (data (i32.const 2100) "521") + (data (i32.const 2104) "522") + (data (i32.const 2108) "523") + (data (i32.const 2112) "524") + (data (i32.const 2116) "525") + (data (i32.const 2120) "526") + (data (i32.const 2124) "527") + (data (i32.const 2128) "528") + (data (i32.const 2132) "529") + (data (i32.const 2136) "530") + (data (i32.const 2140) "531") + (data (i32.const 2144) "532") + (data (i32.const 2148) "533") + (data (i32.const 2152) "534") + (data (i32.const 2156) "535") + (data (i32.const 2160) "536") + (data (i32.const 2164) "537") + (data (i32.const 2168) "538") + (data (i32.const 2172) "539") + (data (i32.const 2176) "540") + (data (i32.const 2180) "541") + (data (i32.const 2184) "542") + (data (i32.const 2188) "543") + (data (i32.const 2192) "544") + (data (i32.const 2196) "545") + (data (i32.const 2200) "546") + (data (i32.const 2204) "547") + (data (i32.const 2208) "548") + (data (i32.const 2212) "549") + (data (i32.const 2216) "550") + (data (i32.const 2220) "551") + (data (i32.const 2224) "552") + (data (i32.const 2228) "553") + (data (i32.const 2232) "554") + (data (i32.const 2236) "555") + (data (i32.const 2240) "556") + (data (i32.const 2244) "557") + (data (i32.const 2248) "558") + (data (i32.const 2252) "559") + (data (i32.const 2256) "560") + (data (i32.const 2260) "561") + (data (i32.const 2264) "562") + (data (i32.const 2268) "563") + (data (i32.const 2272) "564") + (data (i32.const 2276) "565") + (data (i32.const 2280) "566") + (data (i32.const 2284) "567") + (data (i32.const 2288) "568") + (data (i32.const 2292) "569") + (data (i32.const 2296) "570") + (data (i32.const 2300) "571") + (data (i32.const 2304) "572") + (data (i32.const 2308) "573") + (data (i32.const 2312) "574") + (data (i32.const 2316) "575") + (data (i32.const 2320) "576") + (data (i32.const 2324) "577") + (data (i32.const 2328) "578") + (data (i32.const 2332) "579") + (data (i32.const 2336) "580") + (data (i32.const 2340) "581") + (data (i32.const 2344) "582") + (data (i32.const 2348) "583") + (data (i32.const 2352) "584") + (data (i32.const 2356) "585") + (data (i32.const 2360) "586") + (data (i32.const 2364) "587") + (data (i32.const 2368) "588") + (data (i32.const 2372) "589") + (data (i32.const 2376) "590") + (data (i32.const 2380) "591") + (data (i32.const 2384) "592") + (data (i32.const 2388) "593") + (data (i32.const 2392) "594") + (data (i32.const 2396) "595") + (data (i32.const 2400) "596") + (data (i32.const 2404) "597") + (data (i32.const 2408) "598") + (data (i32.const 2412) "599") + (data (i32.const 2416) "600") + (data (i32.const 2420) "601") + (data (i32.const 2424) "602") + (data (i32.const 2428) "603") + (data (i32.const 2432) "604") + (data (i32.const 2436) "605") + (data (i32.const 2440) "606") + (data (i32.const 2444) "607") + (data (i32.const 2448) "608") + (data (i32.const 2452) "609") + (data (i32.const 2456) "610") + (data (i32.const 2460) "611") + (data (i32.const 2464) "612") + (data (i32.const 2468) "613") + (data (i32.const 2472) "614") + (data (i32.const 2476) "615") + (data (i32.const 2480) "616") + (data (i32.const 2484) "617") + (data (i32.const 2488) "618") + (data (i32.const 2492) "619") + (data (i32.const 2496) "620") + (data (i32.const 2500) "621") + (data (i32.const 2504) "622") + (data (i32.const 2508) "623") + (data (i32.const 2512) "624") + (data (i32.const 2516) "625") + (data (i32.const 2520) "626") + (data (i32.const 2524) "627") + (data (i32.const 2528) "628") + (data (i32.const 2532) "629") + (data (i32.const 2536) "630") + (data (i32.const 2540) "631") + (data (i32.const 2544) "632") + (data (i32.const 2548) "633") + (data (i32.const 2552) "634") + (data (i32.const 2556) "635") + (data (i32.const 2560) "636") + (data (i32.const 2564) "637") + (data (i32.const 2568) "638") + (data (i32.const 2572) "639") + (data (i32.const 2576) "640") + (data (i32.const 2580) "641") + (data (i32.const 2584) "642") + (data (i32.const 2588) "643") + (data (i32.const 2592) "644") + (data (i32.const 2596) "645") + (data (i32.const 2600) "646") + (data (i32.const 2604) "647") + (data (i32.const 2608) "648") + (data (i32.const 2612) "649") + (data (i32.const 2616) "650") + (data (i32.const 2620) "651") + (data (i32.const 2624) "652") + (data (i32.const 2628) "653") + (data (i32.const 2632) "654") + (data (i32.const 2636) "655") + (data (i32.const 2640) "656") + (data (i32.const 2644) "657") + (data (i32.const 2648) "658") + (data (i32.const 2652) "659") + (data (i32.const 2656) "660") + (data (i32.const 2660) "661") + (data (i32.const 2664) "662") + (data (i32.const 2668) "663") + (data (i32.const 2672) "664") + (data (i32.const 2676) "665") + (data (i32.const 2680) "666") + (data (i32.const 2684) "667") + (data (i32.const 2688) "668") + (data (i32.const 2692) "669") + (data (i32.const 2696) "670") + (data (i32.const 2700) "671") + (data (i32.const 2704) "672") + (data (i32.const 2708) "673") + (data (i32.const 2712) "674") + (data (i32.const 2716) "675") + (data (i32.const 2720) "676") + (data (i32.const 2724) "677") + (data (i32.const 2728) "678") + (data (i32.const 2732) "679") + (data (i32.const 2736) "680") + (data (i32.const 2740) "681") + (data (i32.const 2744) "682") + (data (i32.const 2748) "683") + (data (i32.const 2752) "684") + (data (i32.const 2756) "685") + (data (i32.const 2760) "686") + (data (i32.const 2764) "687") + (data (i32.const 2768) "688") + (data (i32.const 2772) "689") + (data (i32.const 2776) "690") + (data (i32.const 2780) "691") + (data (i32.const 2784) "692") + (data (i32.const 2788) "693") + (data (i32.const 2792) "694") + (data (i32.const 2796) "695") + (data (i32.const 2800) "696") + (data (i32.const 2804) "697") + (data (i32.const 2808) "698") + (data (i32.const 2812) "699") + (data (i32.const 2816) "700") + (data (i32.const 2820) "701") + (data (i32.const 2824) "702") + (data (i32.const 2828) "703") + (data (i32.const 2832) "704") + (data (i32.const 2836) "705") + (data (i32.const 2840) "706") + (data (i32.const 2844) "707") + (data (i32.const 2848) "708") + (data (i32.const 2852) "709") + (data (i32.const 2856) "710") + (data (i32.const 2860) "711") + (data (i32.const 2864) "712") + (data (i32.const 2868) "713") + (data (i32.const 2872) "714") + (data (i32.const 2876) "715") + (data (i32.const 2880) "716") + (data (i32.const 2884) "717") + (data (i32.const 2888) "718") + (data (i32.const 2892) "719") + (data (i32.const 2896) "720") + (data (i32.const 2900) "721") + (data (i32.const 2904) "722") + (data (i32.const 2908) "723") + (data (i32.const 2912) "724") + (data (i32.const 2916) "725") + (data (i32.const 2920) "726") + (data (i32.const 2924) "727") + (data (i32.const 2928) "728") + (data (i32.const 2932) "729") + (data (i32.const 2936) "730") + (data (i32.const 2940) "731") + (data (i32.const 2944) "732") + (data (i32.const 2948) "733") + (data (i32.const 2952) "734") + (data (i32.const 2956) "735") + (data (i32.const 2960) "736") + (data (i32.const 2964) "737") + (data (i32.const 2968) "738") + (data (i32.const 2972) "739") + (data (i32.const 2976) "740") + (data (i32.const 2980) "741") + (data (i32.const 2984) "742") + (data (i32.const 2988) "743") + (data (i32.const 2992) "744") + (data (i32.const 2996) "745") + (data (i32.const 3000) "746") + (data (i32.const 3004) "747") + (data (i32.const 3008) "748") + (data (i32.const 3012) "749") + (data (i32.const 3016) "750") + (data (i32.const 3020) "751") + (data (i32.const 3024) "752") + (data (i32.const 3028) "753") + (data (i32.const 3032) "754") + (data (i32.const 3036) "755") + (data (i32.const 3040) "756") + (data (i32.const 3044) "757") + (data (i32.const 3048) "758") + (data (i32.const 3052) "759") + (data (i32.const 3056) "760") + (data (i32.const 3060) "761") + (data (i32.const 3064) "762") + (data (i32.const 3068) "763") + (data (i32.const 3072) "764") + (data (i32.const 3076) "765") + (data (i32.const 3080) "766") + (data (i32.const 3084) "767") + (data (i32.const 3088) "768") + (data (i32.const 3092) "769") + (data (i32.const 3096) "770") + (data (i32.const 3100) "771") + (data (i32.const 3104) "772") + (data (i32.const 3108) "773") + (data (i32.const 3112) "774") + (data (i32.const 3116) "775") + (data (i32.const 3120) "776") + (data (i32.const 3124) "777") + (data (i32.const 3128) "778") + (data (i32.const 3132) "779") + (data (i32.const 3136) "780") + (data (i32.const 3140) "781") + (data (i32.const 3144) "782") + (data (i32.const 3148) "783") + (data (i32.const 3152) "784") + (data (i32.const 3156) "785") + (data (i32.const 3160) "786") + (data (i32.const 3164) "787") + (data (i32.const 3168) "788") + (data (i32.const 3172) "789") + (data (i32.const 3176) "790") + (data (i32.const 3180) "791") + (data (i32.const 3184) "792") + (data (i32.const 3188) "793") + (data (i32.const 3192) "794") + (data (i32.const 3196) "795") + (data (i32.const 3200) "796") + (data (i32.const 3204) "797") + (data (i32.const 3208) "798") + (data (i32.const 3212) "799") + (data (i32.const 3216) "800") + (data (i32.const 3220) "801") + (data (i32.const 3224) "802") + (data (i32.const 3228) "803") + (data (i32.const 3232) "804") + (data (i32.const 3236) "805") + (data (i32.const 3240) "806") + (data (i32.const 3244) "807") + (data (i32.const 3248) "808") + (data (i32.const 3252) "809") + (data (i32.const 3256) "810") + (data (i32.const 3260) "811") + (data (i32.const 3264) "812") + (data (i32.const 3268) "813") + (data (i32.const 3272) "814") + (data (i32.const 3276) "815") + (data (i32.const 3280) "816") + (data (i32.const 3284) "817") + (data (i32.const 3288) "818") + (data (i32.const 3292) "819") + (data (i32.const 3296) "820") + (data (i32.const 3300) "821") + (data (i32.const 3304) "822") + (data (i32.const 3308) "823") + (data (i32.const 3312) "824") + (data (i32.const 3316) "825") + (data (i32.const 3320) "826") + (data (i32.const 3324) "827") + (data (i32.const 3328) "828") + (data (i32.const 3332) "829") + (data (i32.const 3336) "830") + (data (i32.const 3340) "831") + (data (i32.const 3344) "832") + (data (i32.const 3348) "833") + (data (i32.const 3352) "834") + (data (i32.const 3356) "835") + (data (i32.const 3360) "836") + (data (i32.const 3364) "837") + (data (i32.const 3368) "838") + (data (i32.const 3372) "839") + (data (i32.const 3376) "840") + (data (i32.const 3380) "841") + (data (i32.const 3384) "842") + (data (i32.const 3388) "843") + (data (i32.const 3392) "844") + (data (i32.const 3396) "845") + (data (i32.const 3400) "846") + (data (i32.const 3404) "847") + (data (i32.const 3408) "848") + (data (i32.const 3412) "849") + (data (i32.const 3416) "850") + (data (i32.const 3420) "851") + (data (i32.const 3424) "852") + (data (i32.const 3428) "853") + (data (i32.const 3432) "854") + (data (i32.const 3436) "855") + (data (i32.const 3440) "856") + (data (i32.const 3444) "857") + (data (i32.const 3448) "858") + (data (i32.const 3452) "859") + (data (i32.const 3456) "860") + (data (i32.const 3460) "861") + (data (i32.const 3464) "862") + (data (i32.const 3468) "863") + (data (i32.const 3472) "864") + (data (i32.const 3476) "865") + (data (i32.const 3480) "866") + (data (i32.const 3484) "867") + (data (i32.const 3488) "868") + (data (i32.const 3492) "869") + (data (i32.const 3496) "870") + (data (i32.const 3500) "871") + (data (i32.const 3504) "872") + (data (i32.const 3508) "873") + (data (i32.const 3512) "874") + (data (i32.const 3516) "875") + (data (i32.const 3520) "876") + (data (i32.const 3524) "877") + (data (i32.const 3528) "878") + (data (i32.const 3532) "879") + (data (i32.const 3536) "880") + (data (i32.const 3540) "881") + (data (i32.const 3544) "882") + (data (i32.const 3548) "883") + (data (i32.const 3552) "884") + (data (i32.const 3556) "885") + (data (i32.const 3560) "886") + (data (i32.const 3564) "887") + (data (i32.const 3568) "888") + (data (i32.const 3572) "889") + (data (i32.const 3576) "890") + (data (i32.const 3580) "891") + (data (i32.const 3584) "892") + (data (i32.const 3588) "893") + (data (i32.const 3592) "894") + (data (i32.const 3596) "895") + (data (i32.const 3600) "896") + (data (i32.const 3604) "897") + (data (i32.const 3608) "898") + (data (i32.const 3612) "899") + (data (i32.const 3616) "900") + (data (i32.const 3620) "901") + (data (i32.const 3624) "902") + (data (i32.const 3628) "903") + (data (i32.const 3632) "904") + (data (i32.const 3636) "905") + (data (i32.const 3640) "906") + (data (i32.const 3644) "907") + (data (i32.const 3648) "908") + (data (i32.const 3652) "909") + (data (i32.const 3656) "910") + (data (i32.const 3660) "911") + (data (i32.const 3664) "912") + (data (i32.const 3668) "913") + (data (i32.const 3672) "914") + (data (i32.const 3676) "915") + (data (i32.const 3680) "916") + (data (i32.const 3684) "917") + (data (i32.const 3688) "918") + (data (i32.const 3692) "919") + (data (i32.const 3696) "920") + (data (i32.const 3700) "921") + (data (i32.const 3704) "922") + (data (i32.const 3708) "923") + (data (i32.const 3712) "924") + (data (i32.const 3716) "925") + (data (i32.const 3720) "926") + (data (i32.const 3724) "927") + (data (i32.const 3728) "928") + (data (i32.const 3732) "929") + (data (i32.const 3736) "930") + (data (i32.const 3740) "931") + (data (i32.const 3744) "932") + (data (i32.const 3748) "933") + (data (i32.const 3752) "934") + (data (i32.const 3756) "935") + (data (i32.const 3760) "936") + (data (i32.const 3764) "937") + (data (i32.const 3768) "938") + (data (i32.const 3772) "939") + (data (i32.const 3776) "940") + (data (i32.const 3780) "941") + (data (i32.const 3784) "942") + (data (i32.const 3788) "943") + (data (i32.const 3792) "944") + (data (i32.const 3796) "945") + (data (i32.const 3800) "946") + (data (i32.const 3804) "947") + (data (i32.const 3808) "948") + (data (i32.const 3812) "949") + (data (i32.const 3816) "950") + (data (i32.const 3820) "951") + (data (i32.const 3824) "952") + (data (i32.const 3828) "953") + (data (i32.const 3832) "954") + (data (i32.const 3836) "955") + (data (i32.const 3840) "956") + (data (i32.const 3844) "957") + (data (i32.const 3848) "958") + (data (i32.const 3852) "959") + (data (i32.const 3856) "960") + (data (i32.const 3860) "961") + (data (i32.const 3864) "962") + (data (i32.const 3868) "963") + (data (i32.const 3872) "964") + (data (i32.const 3876) "965") + (data (i32.const 3880) "966") + (data (i32.const 3884) "967") + (data (i32.const 3888) "968") + (data (i32.const 3892) "969") + (data (i32.const 3896) "970") + (data (i32.const 3900) "971") + (data (i32.const 3904) "972") + (data (i32.const 3908) "973") + (data (i32.const 3912) "974") + (data (i32.const 3916) "975") + (data (i32.const 3920) "976") + (data (i32.const 3924) "977") + (data (i32.const 3928) "978") + (data (i32.const 3932) "979") + (data (i32.const 3936) "980") + (data (i32.const 3940) "981") + (data (i32.const 3944) "982") + (data (i32.const 3948) "983") + (data (i32.const 3952) "984") + (data (i32.const 3956) "985") + (data (i32.const 3960) "986") + (data (i32.const 3964) "987") + (data (i32.const 3968) "988") + (data (i32.const 3972) "989") + (data (i32.const 3976) "990") + (data (i32.const 3980) "991") + (data (i32.const 3984) "992") + (data (i32.const 3988) "993") + (data (i32.const 3992) "994") + (data (i32.const 3996) "995") + (data (i32.const 4000) "996") + (data (i32.const 4004) "997") + (data (i32.const 4008) "998") + (data (i32.const 4012) "999") + (data (i32.const 4016) "1000") + (data (i32.const 4020) "1001") + (data (i32.const 4024) "1002") + (data (i32.const 4028) "1003") + (data (i32.const 4032) "1004") + (data (i32.const 4036) "1005") + (data (i32.const 4040) "1006") + (data (i32.const 4044) "1007") + (data (i32.const 4048) "1008") + (data (i32.const 4052) "1009") + (data (i32.const 4056) "1010") + (data (i32.const 4060) "1011") + (data (i32.const 4064) "1012") + (data (i32.const 4068) "1013") + (data (i32.const 4072) "1014") + (data (i32.const 4076) "1015") + (data (i32.const 4080) "1016") + (data (i32.const 4084) "1017") + (data (i32.const 4088) "1018") + (data (i32.const 4092) "1019") + (data (i32.const 4096) "1020") + (data (i32.const 4100) "1021") + (data (i32.const 4104) "1022") + (data (i32.const 4108) "1023") + (data (i32.const 4112) "1024") + (data (i32.const 4116) "1025") + (data (i32.const 4120) "1026") + (data (i32.const 4124) "1027") + (data (i32.const 4128) "1028") + (data (i32.const 4132) "1029") + (data (i32.const 4136) "1030") + (data (i32.const 4140) "1031") + (data (i32.const 4144) "1032") + (data (i32.const 4148) "1033") + (data (i32.const 4152) "1034") + (data (i32.const 4156) "1035") + (data (i32.const 4160) "1036") + (data (i32.const 4164) "1037") + (data (i32.const 4168) "1038") + (data (i32.const 4172) "1039") + (data (i32.const 4176) "1040") + (data (i32.const 4180) "1041") + (data (i32.const 4184) "1042") + (data (i32.const 4188) "1043") + (data (i32.const 4192) "1044") + (data (i32.const 4196) "1045") + (data (i32.const 4200) "1046") + (data (i32.const 4204) "1047") + (data (i32.const 4208) "1048") + (data (i32.const 4212) "1049") + (data (i32.const 4216) "1050") + (data (i32.const 4220) "1051") + (data (i32.const 4224) "1052") + (data (i32.const 4228) "1053") + (data (i32.const 4232) "1054") + (data (i32.const 4236) "1055") + (data (i32.const 4240) "1056") + (data (i32.const 4244) "1057") + (data (i32.const 4248) "1058") + (data (i32.const 4252) "1059") + (data (i32.const 4256) "1060") + (data (i32.const 4260) "1061") + (data (i32.const 4264) "1062") + (data (i32.const 4268) "1063") + (data (i32.const 4272) "1064") + (data (i32.const 4276) "1065") + (data (i32.const 4280) "1066") + (data (i32.const 4284) "1067") + (data (i32.const 4288) "1068") + (data (i32.const 4292) "1069") + (data (i32.const 4296) "1070") + (data (i32.const 4300) "1071") + (data (i32.const 4304) "1072") + (data (i32.const 4308) "1073") + (data (i32.const 4312) "1074") + (data (i32.const 4316) "1075") + (data (i32.const 4320) "1076") + (data (i32.const 4324) "1077") + (data (i32.const 4328) "1078") + (data (i32.const 4332) "1079") + (data (i32.const 4336) "1080") + (data (i32.const 4340) "1081") + (data (i32.const 4344) "1082") + (data (i32.const 4348) "1083") + (data (i32.const 4352) "1084") + (data (i32.const 4356) "1085") + (data (i32.const 4360) "1086") + (data (i32.const 4364) "1087") + (data (i32.const 4368) "1088") + (data (i32.const 4372) "1089") + (data (i32.const 4376) "1090") + (data (i32.const 4380) "1091") + (data (i32.const 4384) "1092") + (data (i32.const 4388) "1093") + (data (i32.const 4392) "1094") + (data (i32.const 4396) "1095") + (data (i32.const 4400) "1096") + (data (i32.const 4404) "1097") + (data (i32.const 4408) "1098") + (data (i32.const 4412) "1099") + (data (i32.const 4416) "1100") + (data (i32.const 4420) "1101") + (data (i32.const 4424) "1102") + (data (i32.const 4428) "1103") + (data (i32.const 4432) "1104") + (data (i32.const 4436) "1105") + (data (i32.const 4440) "1106") + (data (i32.const 4444) "1107") + (data (i32.const 4448) "1108") + (data (i32.const 4452) "1109") + (data (i32.const 4456) "1110") + (data (i32.const 4460) "1111") + (data (i32.const 4464) "1112") + (data (i32.const 4468) "1113") + (data (i32.const 4472) "1114") + (data (i32.const 4476) "1115") + (data (i32.const 4480) "1116") + (data (i32.const 4484) "1117") + (data (i32.const 4488) "1118") + (data (i32.const 4492) "1119") + (data (i32.const 4496) "1120") + (data (i32.const 4500) "1121") + (data (i32.const 4504) "1122") + (data (i32.const 4508) "1123") + (data (i32.const 4512) "1124") + (data (i32.const 4516) "1125") + (data (i32.const 4520) "1126") + (data (i32.const 4524) "1127") + (data (i32.const 4528) "1128") + (data (i32.const 4532) "1129") + (data (i32.const 4536) "1130") + (data (i32.const 4540) "1131") + (data (i32.const 4544) "1132") + (data (i32.const 4548) "1133") + (data (i32.const 4552) "1134") + (data (i32.const 4556) "1135") + (data (i32.const 4560) "1136") + (data (i32.const 4564) "1137") + (data (i32.const 4568) "1138") + (data (i32.const 4572) "1139") + (data (i32.const 4576) "1140") + (data (i32.const 4580) "1141") + (data (i32.const 4584) "1142") + (data (i32.const 4588) "1143") + (data (i32.const 4592) "1144") + (data (i32.const 4596) "1145") + (data (i32.const 4600) "1146") + (data (i32.const 4604) "1147") + (data (i32.const 4608) "1148") + (data (i32.const 4612) "1149") + (data (i32.const 4616) "1150") + (data (i32.const 4620) "1151") + (data (i32.const 4624) "1152") + (data (i32.const 4628) "1153") + (data (i32.const 4632) "1154") + (data (i32.const 4636) "1155") + (data (i32.const 4640) "1156") + (data (i32.const 4644) "1157") + (data (i32.const 4648) "1158") + (data (i32.const 4652) "1159") + (data (i32.const 4656) "1160") + (data (i32.const 4660) "1161") + (data (i32.const 4664) "1162") + (data (i32.const 4668) "1163") + (data (i32.const 4672) "1164") + (data (i32.const 4676) "1165") + (data (i32.const 4680) "1166") + (data (i32.const 4684) "1167") + (data (i32.const 4688) "1168") + (data (i32.const 4692) "1169") + (data (i32.const 4696) "1170") + (data (i32.const 4700) "1171") + (data (i32.const 4704) "1172") + (data (i32.const 4708) "1173") + (data (i32.const 4712) "1174") + (data (i32.const 4716) "1175") + (data (i32.const 4720) "1176") + (data (i32.const 4724) "1177") + (data (i32.const 4728) "1178") + (data (i32.const 4732) "1179") + (data (i32.const 4736) "1180") + (data (i32.const 4740) "1181") + (data (i32.const 4744) "1182") + (data (i32.const 4748) "1183") + (data (i32.const 4752) "1184") + (data (i32.const 4756) "1185") + (data (i32.const 4760) "1186") + (data (i32.const 4764) "1187") + (data (i32.const 4768) "1188") + (data (i32.const 4772) "1189") + (data (i32.const 4776) "1190") + (data (i32.const 4780) "1191") + (data (i32.const 4784) "1192") + (data (i32.const 4788) "1193") + (data (i32.const 4792) "1194") + (data (i32.const 4796) "1195") + (data (i32.const 4800) "1196") + (data (i32.const 4804) "1197") + (data (i32.const 4808) "1198") + (data (i32.const 4812) "1199") + (data (i32.const 4816) "1200") + (data (i32.const 4820) "1201") + (data (i32.const 4824) "1202") + (data (i32.const 4828) "1203") + (data (i32.const 4832) "1204") + (data (i32.const 4836) "1205") + (data (i32.const 4840) "1206") + (data (i32.const 4844) "1207") + (data (i32.const 4848) "1208") + (data (i32.const 4852) "1209") + (data (i32.const 4856) "1210") + (data (i32.const 4860) "1211") + (data (i32.const 4864) "1212") + (data (i32.const 4868) "1213") + (data (i32.const 4872) "1214") + (data (i32.const 4876) "1215") + (data (i32.const 4880) "1216") + (data (i32.const 4884) "1217") + (data (i32.const 4888) "1218") + (data (i32.const 4892) "1219") + (data (i32.const 4896) "1220") + (data (i32.const 4900) "1221") + (data (i32.const 4904) "1222") + (data (i32.const 4908) "1223") + (data (i32.const 4912) "1224") + (data (i32.const 4916) "1225") + (data (i32.const 4920) "1226") + (data (i32.const 4924) "1227") + (data (i32.const 4928) "1228") + (data (i32.const 4932) "1229") + (data (i32.const 4936) "1230") + (data (i32.const 4940) "1231") + (data (i32.const 4944) "1232") + (data (i32.const 4948) "1233") + (data (i32.const 4952) "1234") + (data (i32.const 4956) "1235") + (data (i32.const 4960) "1236") + (data (i32.const 4964) "1237") + (data (i32.const 4968) "1238") + (data (i32.const 4972) "1239") + (data (i32.const 4976) "1240") + (data (i32.const 4980) "1241") + (data (i32.const 4984) "1242") + (data (i32.const 4988) "1243") + (data (i32.const 4992) "1244") + (data (i32.const 4996) "1245") + (data (i32.const 5000) "1246") + (data (i32.const 5004) "1247") + (data (i32.const 5008) "1248") + (data (i32.const 5012) "1249") + (data (i32.const 5016) "1250") + (data (i32.const 5020) "1251") + (data (i32.const 5024) "1252") + (data (i32.const 5028) "1253") + (data (i32.const 5032) "1254") + (data (i32.const 5036) "1255") + (data (i32.const 5040) "1256") + (data (i32.const 5044) "1257") + (data (i32.const 5048) "1258") + (data (i32.const 5052) "1259") + (data (i32.const 5056) "1260") + (data (i32.const 5060) "1261") + (data (i32.const 5064) "1262") + (data (i32.const 5068) "1263") + (data (i32.const 5072) "1264") + (data (i32.const 5076) "1265") + (data (i32.const 5080) "1266") + (data (i32.const 5084) "1267") + (data (i32.const 5088) "1268") + (data (i32.const 5092) "1269") + (data (i32.const 5096) "1270") + (data (i32.const 5100) "1271") + (data (i32.const 5104) "1272") + (data (i32.const 5108) "1273") + (data (i32.const 5112) "1274") + (data (i32.const 5116) "1275") + (data (i32.const 5120) "1276") + (data (i32.const 5124) "1277") + (data (i32.const 5128) "1278") + (data (i32.const 5132) "1279") + (data (i32.const 5136) "1280") + (data (i32.const 5140) "1281") + (data (i32.const 5144) "1282") + (data (i32.const 5148) "1283") + (data (i32.const 5152) "1284") + (data (i32.const 5156) "1285") + (data (i32.const 5160) "1286") + (data (i32.const 5164) "1287") + (data (i32.const 5168) "1288") + (data (i32.const 5172) "1289") + (data (i32.const 5176) "1290") + (data (i32.const 5180) "1291") + (data (i32.const 5184) "1292") + (data (i32.const 5188) "1293") + (data (i32.const 5192) "1294") + (data (i32.const 5196) "1295") + (data (i32.const 5200) "1296") + (data (i32.const 5204) "1297") + (data (i32.const 5208) "1298") + (data (i32.const 5212) "1299") + (data (i32.const 5216) "1300") + (data (i32.const 5220) "1301") + (data (i32.const 5224) "1302") + (data (i32.const 5228) "1303") + (data (i32.const 5232) "1304") + (data (i32.const 5236) "1305") + (data (i32.const 5240) "1306") + (data (i32.const 5244) "1307") + (data (i32.const 5248) "1308") + (data (i32.const 5252) "1309") + (data (i32.const 5256) "1310") + (data (i32.const 5260) "1311") + (data (i32.const 5264) "1312") + (data (i32.const 5268) "1313") + (data (i32.const 5272) "1314") + (data (i32.const 5276) "1315") + (data (i32.const 5280) "1316") + (data (i32.const 5284) "1317") + (data (i32.const 5288) "1318") + (data (i32.const 5292) "1319") + (data (i32.const 5296) "1320") + (data (i32.const 5300) "1321") + (data (i32.const 5304) "1322") + (data (i32.const 5308) "1323") + (data (i32.const 5312) "1324") + (data (i32.const 5316) "1325") + (data (i32.const 5320) "1326") + (data (i32.const 5324) "1327") + (data (i32.const 5328) "1328") + (data (i32.const 5332) "1329") + (data (i32.const 5336) "1330") + (data (i32.const 5340) "1331") + (data (i32.const 5344) "1332") + (data (i32.const 5348) "1333") + (data (i32.const 5352) "1334") + (data (i32.const 5356) "1335") + (data (i32.const 5360) "1336") + (data (i32.const 5364) "1337") + (data (i32.const 5368) "1338") + (data (i32.const 5372) "1339") + (data (i32.const 5376) "1340") + (data (i32.const 5380) "1341") + (data (i32.const 5384) "1342") + (data (i32.const 5388) "1343") + (data (i32.const 5392) "1344") + (data (i32.const 5396) "1345") + (data (i32.const 5400) "1346") + (data (i32.const 5404) "1347") + (data (i32.const 5408) "1348") + (data (i32.const 5412) "1349") + (data (i32.const 5416) "1350") + (data (i32.const 5420) "1351") + (data (i32.const 5424) "1352") + (data (i32.const 5428) "1353") + (data (i32.const 5432) "1354") + (data (i32.const 5436) "1355") + (data (i32.const 5440) "1356") + (data (i32.const 5444) "1357") + (data (i32.const 5448) "1358") + (data (i32.const 5452) "1359") + (data (i32.const 5456) "1360") + (data (i32.const 5460) "1361") + (data (i32.const 5464) "1362") + (data (i32.const 5468) "1363") + (data (i32.const 5472) "1364") + (data (i32.const 5476) "1365") + (data (i32.const 5480) "1366") + (data (i32.const 5484) "1367") + (data (i32.const 5488) "1368") + (data (i32.const 5492) "1369") + (data (i32.const 5496) "1370") + (data (i32.const 5500) "1371") + (data (i32.const 5504) "1372") + (data (i32.const 5508) "1373") + (data (i32.const 5512) "1374") + (data (i32.const 5516) "1375") + (data (i32.const 5520) "1376") + (data (i32.const 5524) "1377") + (data (i32.const 5528) "1378") + (data (i32.const 5532) "1379") + (data (i32.const 5536) "1380") + (data (i32.const 5540) "1381") + (data (i32.const 5544) "1382") + (data (i32.const 5548) "1383") + (data (i32.const 5552) "1384") + (data (i32.const 5556) "1385") + (data (i32.const 5560) "1386") + (data (i32.const 5564) "1387") + (data (i32.const 5568) "1388") + (data (i32.const 5572) "1389") + (data (i32.const 5576) "1390") + (data (i32.const 5580) "1391") + (data (i32.const 5584) "1392") + (data (i32.const 5588) "1393") + (data (i32.const 5592) "1394") + (data (i32.const 5596) "1395") + (data (i32.const 5600) "1396") + (data (i32.const 5604) "1397") + (data (i32.const 5608) "1398") + (data (i32.const 5612) "1399") + (data (i32.const 5616) "1400") + (data (i32.const 5620) "1401") + (data (i32.const 5624) "1402") + (data (i32.const 5628) "1403") + (data (i32.const 5632) "1404") + (data (i32.const 5636) "1405") + (data (i32.const 5640) "1406") + (data (i32.const 5644) "1407") + (data (i32.const 5648) "1408") + (data (i32.const 5652) "1409") + (data (i32.const 5656) "1410") + (data (i32.const 5660) "1411") + (data (i32.const 5664) "1412") + (data (i32.const 5668) "1413") + (data (i32.const 5672) "1414") + (data (i32.const 5676) "1415") + (data (i32.const 5680) "1416") + (data (i32.const 5684) "1417") + (data (i32.const 5688) "1418") + (data (i32.const 5692) "1419") + (data (i32.const 5696) "1420") + (data (i32.const 5700) "1421") + (data (i32.const 5704) "1422") + (data (i32.const 5708) "1423") + (data (i32.const 5712) "1424") + (data (i32.const 5716) "1425") + (data (i32.const 5720) "1426") + (data (i32.const 5724) "1427") + (data (i32.const 5728) "1428") + (data (i32.const 5732) "1429") + (data (i32.const 5736) "1430") + (data (i32.const 5740) "1431") + (data (i32.const 5744) "1432") + (data (i32.const 5748) "1433") + (data (i32.const 5752) "1434") + (data (i32.const 5756) "1435") + (data (i32.const 5760) "1436") + (data (i32.const 5764) "1437") + (data (i32.const 5768) "1438") + (data (i32.const 5772) "1439") + (data (i32.const 5776) "1440") + (data (i32.const 5780) "1441") + (data (i32.const 5784) "1442") + (data (i32.const 5788) "1443") + (data (i32.const 5792) "1444") + (data (i32.const 5796) "1445") + (data (i32.const 5800) "1446") + (data (i32.const 5804) "1447") + (data (i32.const 5808) "1448") + (data (i32.const 5812) "1449") + (data (i32.const 5816) "1450") + (data (i32.const 5820) "1451") + (data (i32.const 5824) "1452") + (data (i32.const 5828) "1453") + (data (i32.const 5832) "1454") + (data (i32.const 5836) "1455") + (data (i32.const 5840) "1456") + (data (i32.const 5844) "1457") + (data (i32.const 5848) "1458") + (data (i32.const 5852) "1459") + (data (i32.const 5856) "1460") + (data (i32.const 5860) "1461") + (data (i32.const 5864) "1462") + (data (i32.const 5868) "1463") + (data (i32.const 5872) "1464") + (data (i32.const 5876) "1465") + (data (i32.const 5880) "1466") + (data (i32.const 5884) "1467") + (data (i32.const 5888) "1468") + (data (i32.const 5892) "1469") + (data (i32.const 5896) "1470") + (data (i32.const 5900) "1471") + (data (i32.const 5904) "1472") + (data (i32.const 5908) "1473") + (data (i32.const 5912) "1474") + (data (i32.const 5916) "1475") + (data (i32.const 5920) "1476") + (data (i32.const 5924) "1477") + (data (i32.const 5928) "1478") + (data (i32.const 5932) "1479") + (data (i32.const 5936) "1480") + (data (i32.const 5940) "1481") + (data (i32.const 5944) "1482") + (data (i32.const 5948) "1483") + (data (i32.const 5952) "1484") + (data (i32.const 5956) "1485") + (data (i32.const 5960) "1486") + (data (i32.const 5964) "1487") + (data (i32.const 5968) "1488") + (data (i32.const 5972) "1489") + (data (i32.const 5976) "1490") + (data (i32.const 5980) "1491") + (data (i32.const 5984) "1492") + (data (i32.const 5988) "1493") + (data (i32.const 5992) "1494") + (data (i32.const 5996) "1495") + (data (i32.const 6000) "1496") + (data (i32.const 6004) "1497") + (data (i32.const 6008) "1498") + (data (i32.const 6012) "1499") + (data (i32.const 6016) "1500") + (data (i32.const 6020) "1501") + (data (i32.const 6024) "1502") + (data (i32.const 6028) "1503") + (data (i32.const 6032) "1504") + (data (i32.const 6036) "1505") + (data (i32.const 6040) "1506") + (data (i32.const 6044) "1507") + (data (i32.const 6048) "1508") + (data (i32.const 6052) "1509") + (data (i32.const 6056) "1510") + (data (i32.const 6060) "1511") + (data (i32.const 6064) "1512") + (data (i32.const 6068) "1513") + (data (i32.const 6072) "1514") + (data (i32.const 6076) "1515") + (data (i32.const 6080) "1516") + (data (i32.const 6084) "1517") + (data (i32.const 6088) "1518") + (data (i32.const 6092) "1519") + (data (i32.const 6096) "1520") + (data (i32.const 6100) "1521") + (data (i32.const 6104) "1522") + (data (i32.const 6108) "1523") + (data (i32.const 6112) "1524") + (data (i32.const 6116) "1525") + (data (i32.const 6120) "1526") + (data (i32.const 6124) "1527") + (data (i32.const 6128) "1528") + (data (i32.const 6132) "1529") + (data (i32.const 6136) "1530") + (data (i32.const 6140) "1531") + (data (i32.const 6144) "1532") + (data (i32.const 6148) "1533") + (data (i32.const 6152) "1534") + (data (i32.const 6156) "1535") + (data (i32.const 6160) "1536") + (data (i32.const 6164) "1537") + (data (i32.const 6168) "1538") + (data (i32.const 6172) "1539") + (data (i32.const 6176) "1540") + (data (i32.const 6180) "1541") + (data (i32.const 6184) "1542") + (data (i32.const 6188) "1543") + (data (i32.const 6192) "1544") + (data (i32.const 6196) "1545") + (data (i32.const 6200) "1546") + (data (i32.const 6204) "1547") + (data (i32.const 6208) "1548") + (data (i32.const 6212) "1549") + (data (i32.const 6216) "1550") + (data (i32.const 6220) "1551") + (data (i32.const 6224) "1552") + (data (i32.const 6228) "1553") + (data (i32.const 6232) "1554") + (data (i32.const 6236) "1555") + (data (i32.const 6240) "1556") + (data (i32.const 6244) "1557") + (data (i32.const 6248) "1558") + (data (i32.const 6252) "1559") + (data (i32.const 6256) "1560") + (data (i32.const 6260) "1561") + (data (i32.const 6264) "1562") + (data (i32.const 6268) "1563") + (data (i32.const 6272) "1564") + (data (i32.const 6276) "1565") + (data (i32.const 6280) "1566") + (data (i32.const 6284) "1567") + (data (i32.const 6288) "1568") + (data (i32.const 6292) "1569") + (data (i32.const 6296) "1570") + (data (i32.const 6300) "1571") + (data (i32.const 6304) "1572") + (data (i32.const 6308) "1573") + (data (i32.const 6312) "1574") + (data (i32.const 6316) "1575") + (data (i32.const 6320) "1576") + (data (i32.const 6324) "1577") + (data (i32.const 6328) "1578") + (data (i32.const 6332) "1579") + (data (i32.const 6336) "1580") + (data (i32.const 6340) "1581") + (data (i32.const 6344) "1582") + (data (i32.const 6348) "1583") + (data (i32.const 6352) "1584") + (data (i32.const 6356) "1585") + (data (i32.const 6360) "1586") + (data (i32.const 6364) "1587") + (data (i32.const 6368) "1588") + (data (i32.const 6372) "1589") + (data (i32.const 6376) "1590") + (data (i32.const 6380) "1591") + (data (i32.const 6384) "1592") + (data (i32.const 6388) "1593") + (data (i32.const 6392) "1594") + (data (i32.const 6396) "1595") + (data (i32.const 6400) "1596") + (data (i32.const 6404) "1597") + (data (i32.const 6408) "1598") + (data (i32.const 6412) "1599") + (data (i32.const 6416) "1600") + (data (i32.const 6420) "1601") + (data (i32.const 6424) "1602") + (data (i32.const 6428) "1603") + (data (i32.const 6432) "1604") + (data (i32.const 6436) "1605") + (data (i32.const 6440) "1606") + (data (i32.const 6444) "1607") + (data (i32.const 6448) "1608") + (data (i32.const 6452) "1609") + (data (i32.const 6456) "1610") + (data (i32.const 6460) "1611") + (data (i32.const 6464) "1612") + (data (i32.const 6468) "1613") + (data (i32.const 6472) "1614") + (data (i32.const 6476) "1615") + (data (i32.const 6480) "1616") + (data (i32.const 6484) "1617") + (data (i32.const 6488) "1618") + (data (i32.const 6492) "1619") + (data (i32.const 6496) "1620") + (data (i32.const 6500) "1621") + (data (i32.const 6504) "1622") + (data (i32.const 6508) "1623") + (data (i32.const 6512) "1624") + (data (i32.const 6516) "1625") + (data (i32.const 6520) "1626") + (data (i32.const 6524) "1627") + (data (i32.const 6528) "1628") + (data (i32.const 6532) "1629") + (data (i32.const 6536) "1630") + (data (i32.const 6540) "1631") + (data (i32.const 6544) "1632") + (data (i32.const 6548) "1633") + (data (i32.const 6552) "1634") + (data (i32.const 6556) "1635") + (data (i32.const 6560) "1636") + (data (i32.const 6564) "1637") + (data (i32.const 6568) "1638") + (data (i32.const 6572) "1639") + (data (i32.const 6576) "1640") + (data (i32.const 6580) "1641") + (data (i32.const 6584) "1642") + (data (i32.const 6588) "1643") + (data (i32.const 6592) "1644") + (data (i32.const 6596) "1645") + (data (i32.const 6600) "1646") + (data (i32.const 6604) "1647") + (data (i32.const 6608) "1648") + (data (i32.const 6612) "1649") + (data (i32.const 6616) "1650") + (data (i32.const 6620) "1651") + (data (i32.const 6624) "1652") + (data (i32.const 6628) "1653") + (data (i32.const 6632) "1654") + (data (i32.const 6636) "1655") + (data (i32.const 6640) "1656") + (data (i32.const 6644) "1657") + (data (i32.const 6648) "1658") + (data (i32.const 6652) "1659") + (data (i32.const 6656) "1660") + (data (i32.const 6660) "1661") + (data (i32.const 6664) "1662") + (data (i32.const 6668) "1663") + (data (i32.const 6672) "1664") + (data (i32.const 6676) "1665") + (data (i32.const 6680) "1666") + (data (i32.const 6684) "1667") + (data (i32.const 6688) "1668") + (data (i32.const 6692) "1669") + (data (i32.const 6696) "1670") + (data (i32.const 6700) "1671") + (data (i32.const 6704) "1672") + (data (i32.const 6708) "1673") + (data (i32.const 6712) "1674") + (data (i32.const 6716) "1675") + (data (i32.const 6720) "1676") + (data (i32.const 6724) "1677") + (data (i32.const 6728) "1678") + (data (i32.const 6732) "1679") + (data (i32.const 6736) "1680") + (data (i32.const 6740) "1681") + (data (i32.const 6744) "1682") + (data (i32.const 6748) "1683") + (data (i32.const 6752) "1684") + (data (i32.const 6756) "1685") + (data (i32.const 6760) "1686") + (data (i32.const 6764) "1687") + (data (i32.const 6768) "1688") + (data (i32.const 6772) "1689") + (data (i32.const 6776) "1690") + (data (i32.const 6780) "1691") + (data (i32.const 6784) "1692") + (data (i32.const 6788) "1693") + (data (i32.const 6792) "1694") + (data (i32.const 6796) "1695") + (data (i32.const 6800) "1696") + (data (i32.const 6804) "1697") + (data (i32.const 6808) "1698") + (data (i32.const 6812) "1699") + (data (i32.const 6816) "1700") + (data (i32.const 6820) "1701") + (data (i32.const 6824) "1702") + (data (i32.const 6828) "1703") + (data (i32.const 6832) "1704") + (data (i32.const 6836) "1705") + (data (i32.const 6840) "1706") + (data (i32.const 6844) "1707") + (data (i32.const 6848) "1708") + (data (i32.const 6852) "1709") + (data (i32.const 6856) "1710") + (data (i32.const 6860) "1711") + (data (i32.const 6864) "1712") + (data (i32.const 6868) "1713") + (data (i32.const 6872) "1714") + (data (i32.const 6876) "1715") + (data (i32.const 6880) "1716") + (data (i32.const 6884) "1717") + (data (i32.const 6888) "1718") + (data (i32.const 6892) "1719") + (data (i32.const 6896) "1720") + (data (i32.const 6900) "1721") + (data (i32.const 6904) "1722") + (data (i32.const 6908) "1723") + (data (i32.const 6912) "1724") + (data (i32.const 6916) "1725") + (data (i32.const 6920) "1726") + (data (i32.const 6924) "1727") + (data (i32.const 6928) "1728") + (data (i32.const 6932) "1729") + (data (i32.const 6936) "1730") + (data (i32.const 6940) "1731") + (data (i32.const 6944) "1732") + (data (i32.const 6948) "1733") + (data (i32.const 6952) "1734") + (data (i32.const 6956) "1735") + (data (i32.const 6960) "1736") + (data (i32.const 6964) "1737") + (data (i32.const 6968) "1738") + (data (i32.const 6972) "1739") + (data (i32.const 6976) "1740") + (data (i32.const 6980) "1741") + (data (i32.const 6984) "1742") + (data (i32.const 6988) "1743") + (data (i32.const 6992) "1744") + (data (i32.const 6996) "1745") + (data (i32.const 7000) "1746") + (data (i32.const 7004) "1747") + (data (i32.const 7008) "1748") + (data (i32.const 7012) "1749") + (data (i32.const 7016) "1750") + (data (i32.const 7020) "1751") + (data (i32.const 7024) "1752") + (data (i32.const 7028) "1753") + (data (i32.const 7032) "1754") + (data (i32.const 7036) "1755") + (data (i32.const 7040) "1756") + (data (i32.const 7044) "1757") + (data (i32.const 7048) "1758") + (data (i32.const 7052) "1759") + (data (i32.const 7056) "1760") + (data (i32.const 7060) "1761") + (data (i32.const 7064) "1762") + (data (i32.const 7068) "1763") + (data (i32.const 7072) "1764") + (data (i32.const 7076) "1765") + (data (i32.const 7080) "1766") + (data (i32.const 7084) "1767") + (data (i32.const 7088) "1768") + (data (i32.const 7092) "1769") + (data (i32.const 7096) "1770") + (data (i32.const 7100) "1771") + (data (i32.const 7104) "1772") + (data (i32.const 7108) "1773") + (data (i32.const 7112) "1774") + (data (i32.const 7116) "1775") + (data (i32.const 7120) "1776") + (data (i32.const 7124) "1777") + (data (i32.const 7128) "1778") + (data (i32.const 7132) "1779") + (data (i32.const 7136) "1780") + (data (i32.const 7140) "1781") + (data (i32.const 7144) "1782") + (data (i32.const 7148) "1783") + (data (i32.const 7152) "1784") + (data (i32.const 7156) "1785") + (data (i32.const 7160) "1786") + (data (i32.const 7164) "1787") + (data (i32.const 7168) "1788") + (data (i32.const 7172) "1789") + (data (i32.const 7176) "1790") + (data (i32.const 7180) "1791") + (data (i32.const 7184) "1792") + (data (i32.const 7188) "1793") + (data (i32.const 7192) "1794") + (data (i32.const 7196) "1795") + (data (i32.const 7200) "1796") + (data (i32.const 7204) "1797") + (data (i32.const 7208) "1798") + (data (i32.const 7212) "1799") + (data (i32.const 7216) "1800") + (data (i32.const 7220) "1801") + (data (i32.const 7224) "1802") + (data (i32.const 7228) "1803") + (data (i32.const 7232) "1804") + (data (i32.const 7236) "1805") + (data (i32.const 7240) "1806") + (data (i32.const 7244) "1807") + (data (i32.const 7248) "1808") + (data (i32.const 7252) "1809") + (data (i32.const 7256) "1810") + (data (i32.const 7260) "1811") + (data (i32.const 7264) "1812") + (data (i32.const 7268) "1813") + (data (i32.const 7272) "1814") + (data (i32.const 7276) "1815") + (data (i32.const 7280) "1816") + (data (i32.const 7284) "1817") + (data (i32.const 7288) "1818") + (data (i32.const 7292) "1819") + (data (i32.const 7296) "1820") + (data (i32.const 7300) "1821") + (data (i32.const 7304) "1822") + (data (i32.const 7308) "1823") + (data (i32.const 7312) "1824") + (data (i32.const 7316) "1825") + (data (i32.const 7320) "1826") + (data (i32.const 7324) "1827") + (data (i32.const 7328) "1828") + (data (i32.const 7332) "1829") + (data (i32.const 7336) "1830") + (data (i32.const 7340) "1831") + (data (i32.const 7344) "1832") + (data (i32.const 7348) "1833") + (data (i32.const 7352) "1834") + (data (i32.const 7356) "1835") + (data (i32.const 7360) "1836") + (data (i32.const 7364) "1837") + (data (i32.const 7368) "1838") + (data (i32.const 7372) "1839") + (data (i32.const 7376) "1840") + (data (i32.const 7380) "1841") + (data (i32.const 7384) "1842") + (data (i32.const 7388) "1843") + (data (i32.const 7392) "1844") + (data (i32.const 7396) "1845") + (data (i32.const 7400) "1846") + (data (i32.const 7404) "1847") + (data (i32.const 7408) "1848") + (data (i32.const 7412) "1849") + (data (i32.const 7416) "1850") + (data (i32.const 7420) "1851") + (data (i32.const 7424) "1852") + (data (i32.const 7428) "1853") + (data (i32.const 7432) "1854") + (data (i32.const 7436) "1855") + (data (i32.const 7440) "1856") + (data (i32.const 7444) "1857") + (data (i32.const 7448) "1858") + (data (i32.const 7452) "1859") + (data (i32.const 7456) "1860") + (data (i32.const 7460) "1861") + (data (i32.const 7464) "1862") + (data (i32.const 7468) "1863") + (data (i32.const 7472) "1864") + (data (i32.const 7476) "1865") + (data (i32.const 7480) "1866") + (data (i32.const 7484) "1867") + (data (i32.const 7488) "1868") + (data (i32.const 7492) "1869") + (data (i32.const 7496) "1870") + (data (i32.const 7500) "1871") + (data (i32.const 7504) "1872") + (data (i32.const 7508) "1873") + (data (i32.const 7512) "1874") + (data (i32.const 7516) "1875") + (data (i32.const 7520) "1876") + (data (i32.const 7524) "1877") + (data (i32.const 7528) "1878") + (data (i32.const 7532) "1879") + (data (i32.const 7536) "1880") + (data (i32.const 7540) "1881") + (data (i32.const 7544) "1882") + (data (i32.const 7548) "1883") + (data (i32.const 7552) "1884") + (data (i32.const 7556) "1885") + (data (i32.const 7560) "1886") + (data (i32.const 7564) "1887") + (data (i32.const 7568) "1888") + (data (i32.const 7572) "1889") + (data (i32.const 7576) "1890") + (data (i32.const 7580) "1891") + (data (i32.const 7584) "1892") + (data (i32.const 7588) "1893") + (data (i32.const 7592) "1894") + (data (i32.const 7596) "1895") + (data (i32.const 7600) "1896") + (data (i32.const 7604) "1897") + (data (i32.const 7608) "1898") + (data (i32.const 7612) "1899") + (data (i32.const 7616) "1900") + (data (i32.const 7620) "1901") + (data (i32.const 7624) "1902") + (data (i32.const 7628) "1903") + (data (i32.const 7632) "1904") + (data (i32.const 7636) "1905") + (data (i32.const 7640) "1906") + (data (i32.const 7644) "1907") + (data (i32.const 7648) "1908") + (data (i32.const 7652) "1909") + (data (i32.const 7656) "1910") + (data (i32.const 7660) "1911") + (data (i32.const 7664) "1912") + (data (i32.const 7668) "1913") + (data (i32.const 7672) "1914") + (data (i32.const 7676) "1915") + (data (i32.const 7680) "1916") + (data (i32.const 7684) "1917") + (data (i32.const 7688) "1918") + (data (i32.const 7692) "1919") + (data (i32.const 7696) "1920") + (data (i32.const 7700) "1921") + (data (i32.const 7704) "1922") + (data (i32.const 7708) "1923") + (data (i32.const 7712) "1924") + (data (i32.const 7716) "1925") + (data (i32.const 7720) "1926") + (data (i32.const 7724) "1927") + (data (i32.const 7728) "1928") + (data (i32.const 7732) "1929") + (data (i32.const 7736) "1930") + (data (i32.const 7740) "1931") + (data (i32.const 7744) "1932") + (data (i32.const 7748) "1933") + (data (i32.const 7752) "1934") + (data (i32.const 7756) "1935") + (data (i32.const 7760) "1936") + (data (i32.const 7764) "1937") + (data (i32.const 7768) "1938") + (data (i32.const 7772) "1939") + (data (i32.const 7776) "1940") + (data (i32.const 7780) "1941") + (data (i32.const 7784) "1942") + (data (i32.const 7788) "1943") + (data (i32.const 7792) "1944") + (data (i32.const 7796) "1945") + (data (i32.const 7800) "1946") + (data (i32.const 7804) "1947") + (data (i32.const 7808) "1948") + (data (i32.const 7812) "1949") + (data (i32.const 7816) "1950") + (data (i32.const 7820) "1951") + (data (i32.const 7824) "1952") + (data (i32.const 7828) "1953") + (data (i32.const 7832) "1954") + (data (i32.const 7836) "1955") + (data (i32.const 7840) "1956") + (data (i32.const 7844) "1957") + (data (i32.const 7848) "1958") + (data (i32.const 7852) "1959") + (data (i32.const 7856) "1960") + (data (i32.const 7860) "1961") + (data (i32.const 7864) "1962") + (data (i32.const 7868) "1963") + (data (i32.const 7872) "1964") + (data (i32.const 7876) "1965") + (data (i32.const 7880) "1966") + (data (i32.const 7884) "1967") + (data (i32.const 7888) "1968") + (data (i32.const 7892) "1969") + (data (i32.const 7896) "1970") + (data (i32.const 7900) "1971") + (data (i32.const 7904) "1972") + (data (i32.const 7908) "1973") + (data (i32.const 7912) "1974") + (data (i32.const 7916) "1975") + (data (i32.const 7920) "1976") + (data (i32.const 7924) "1977") + (data (i32.const 7928) "1978") + (data (i32.const 7932) "1979") + (data (i32.const 7936) "1980") + (data (i32.const 7940) "1981") + (data (i32.const 7944) "1982") + (data (i32.const 7948) "1983") + (data (i32.const 7952) "1984") + (data (i32.const 7956) "1985") + (data (i32.const 7960) "1986") + (data (i32.const 7964) "1987") + (data (i32.const 7968) "1988") + (data (i32.const 7972) "1989") + (data (i32.const 7976) "1990") + (data (i32.const 7980) "1991") + (data (i32.const 7984) "1992") + (data (i32.const 7988) "1993") + (data (i32.const 7992) "1994") + (data (i32.const 7996) "1995") + (data (i32.const 8000) "1996") + (data (i32.const 8004) "1997") + (data (i32.const 8008) "1998") + (data (i32.const 8012) "1999") + (data (i32.const 8016) "2000") + (data (i32.const 8020) "2001") + (data (i32.const 8024) "2002") + (data (i32.const 8028) "2003") + (data (i32.const 8032) "2004") + (data (i32.const 8036) "2005") + (data (i32.const 8040) "2006") + (data (i32.const 8044) "2007") + (data (i32.const 8048) "2008") + (data (i32.const 8052) "2009") + (data (i32.const 8056) "2010") + (data (i32.const 8060) "2011") + (data (i32.const 8064) "2012") + (data (i32.const 8068) "2013") + (data (i32.const 8072) "2014") + (data (i32.const 8076) "2015") + (data (i32.const 8080) "2016") + (data (i32.const 8084) "2017") + (data (i32.const 8088) "2018") + (data (i32.const 8092) "2019") + (data (i32.const 8096) "2020") + (data (i32.const 8100) "2021") + (data (i32.const 8104) "2022") + (data (i32.const 8108) "2023") + (data (i32.const 8112) "2024") + (data (i32.const 8116) "2025") + (data (i32.const 8120) "2026") + (data (i32.const 8124) "2027") + (data (i32.const 8128) "2028") + (data (i32.const 8132) "2029") + (data (i32.const 8136) "2030") + (data (i32.const 8140) "2031") + (data (i32.const 8144) "2032") + (data (i32.const 8148) "2033") + (data (i32.const 8152) "2034") + (data (i32.const 8156) "2035") + (data (i32.const 8160) "2036") + (data (i32.const 8164) "2037") + (data (i32.const 8168) "2038") + (data (i32.const 8172) "2039") + (data (i32.const 8176) "2040") + (data (i32.const 8180) "2041") + (data (i32.const 8184) "2042") + (data (i32.const 8188) "2043") + (data (i32.const 8192) "2044") + (data (i32.const 8196) "2045") + (data (i32.const 8200) "2046") + (data (i32.const 8204) "2047") + (data (i32.const 8208) "2048") + (data (i32.const 8212) "2049") + (data (i32.const 8216) "2050") + (data (i32.const 8220) "2051") + (data (i32.const 8224) "2052") + (data (i32.const 8228) "2053") + (data (i32.const 8232) "2054") + (data (i32.const 8236) "2055") + (data (i32.const 8240) "2056") + (data (i32.const 8244) "2057") + (data (i32.const 8248) "2058") + (data (i32.const 8252) "2059") + (data (i32.const 8256) "2060") + (data (i32.const 8260) "2061") + (data (i32.const 8264) "2062") + (data (i32.const 8268) "2063") + (data (i32.const 8272) "2064") + (data (i32.const 8276) "2065") + (data (i32.const 8280) "2066") + (data (i32.const 8284) "2067") + (data (i32.const 8288) "2068") + (data (i32.const 8292) "2069") + (data (i32.const 8296) "2070") + (data (i32.const 8300) "2071") + (data (i32.const 8304) "2072") + (data (i32.const 8308) "2073") + (data (i32.const 8312) "2074") + (data (i32.const 8316) "2075") + (data (i32.const 8320) "2076") + (data (i32.const 8324) "2077") + (data (i32.const 8328) "2078") + (data (i32.const 8332) "2079") + (data (i32.const 8336) "2080") + (data (i32.const 8340) "2081") + (data (i32.const 8344) "2082") + (data (i32.const 8348) "2083") + (data (i32.const 8352) "2084") + (data (i32.const 8356) "2085") + (data (i32.const 8360) "2086") + (data (i32.const 8364) "2087") + (data (i32.const 8368) "2088") + (data (i32.const 8372) "2089") + (data (i32.const 8376) "2090") + (data (i32.const 8380) "2091") + (data (i32.const 8384) "2092") + (data (i32.const 8388) "2093") + (data (i32.const 8392) "2094") + (data (i32.const 8396) "2095") + (data (i32.const 8400) "2096") + (data (i32.const 8404) "2097") + (data (i32.const 8408) "2098") + (data (i32.const 8412) "2099") + (data (i32.const 8416) "2100") + (data (i32.const 8420) "2101") + (data (i32.const 8424) "2102") + (data (i32.const 8428) "2103") + (data (i32.const 8432) "2104") + (data (i32.const 8436) "2105") + (data (i32.const 8440) "2106") + (data (i32.const 8444) "2107") + (data (i32.const 8448) "2108") + (data (i32.const 8452) "2109") + (data (i32.const 8456) "2110") + (data (i32.const 8460) "2111") + (data (i32.const 8464) "2112") + (data (i32.const 8468) "2113") + (data (i32.const 8472) "2114") + (data (i32.const 8476) "2115") + (data (i32.const 8480) "2116") + (data (i32.const 8484) "2117") + (data (i32.const 8488) "2118") + (data (i32.const 8492) "2119") + (data (i32.const 8496) "2120") + (data (i32.const 8500) "2121") + (data (i32.const 8504) "2122") + (data (i32.const 8508) "2123") + (data (i32.const 8512) "2124") + (data (i32.const 8516) "2125") + (data (i32.const 8520) "2126") + (data (i32.const 8524) "2127") + (data (i32.const 8528) "2128") + (data (i32.const 8532) "2129") + (data (i32.const 8536) "2130") + (data (i32.const 8540) "2131") + (data (i32.const 8544) "2132") + (data (i32.const 8548) "2133") + (data (i32.const 8552) "2134") + (data (i32.const 8556) "2135") + (data (i32.const 8560) "2136") + (data (i32.const 8564) "2137") + (data (i32.const 8568) "2138") + (data (i32.const 8572) "2139") + (data (i32.const 8576) "2140") + (data (i32.const 8580) "2141") + (data (i32.const 8584) "2142") + (data (i32.const 8588) "2143") + (data (i32.const 8592) "2144") + (data (i32.const 8596) "2145") + (data (i32.const 8600) "2146") + (data (i32.const 8604) "2147") + (data (i32.const 8608) "2148") + (data (i32.const 8612) "2149") + (data (i32.const 8616) "2150") + (data (i32.const 8620) "2151") + (data (i32.const 8624) "2152") + (data (i32.const 8628) "2153") + (data (i32.const 8632) "2154") + (data (i32.const 8636) "2155") + (data (i32.const 8640) "2156") + (data (i32.const 8644) "2157") + (data (i32.const 8648) "2158") + (data (i32.const 8652) "2159") + (data (i32.const 8656) "2160") + (data (i32.const 8660) "2161") + (data (i32.const 8664) "2162") + (data (i32.const 8668) "2163") + (data (i32.const 8672) "2164") + (data (i32.const 8676) "2165") + (data (i32.const 8680) "2166") + (data (i32.const 8684) "2167") + (data (i32.const 8688) "2168") + (data (i32.const 8692) "2169") + (data (i32.const 8696) "2170") + (data (i32.const 8700) "2171") + (data (i32.const 8704) "2172") + (data (i32.const 8708) "2173") + (data (i32.const 8712) "2174") + (data (i32.const 8716) "2175") + (data (i32.const 8720) "2176") + (data (i32.const 8724) "2177") + (data (i32.const 8728) "2178") + (data (i32.const 8732) "2179") + (data (i32.const 8736) "2180") + (data (i32.const 8740) "2181") + (data (i32.const 8744) "2182") + (data (i32.const 8748) "2183") + (data (i32.const 8752) "2184") + (data (i32.const 8756) "2185") + (data (i32.const 8760) "2186") + (data (i32.const 8764) "2187") + (data (i32.const 8768) "2188") + (data (i32.const 8772) "2189") + (data (i32.const 8776) "2190") + (data (i32.const 8780) "2191") + (data (i32.const 8784) "2192") + (data (i32.const 8788) "2193") + (data (i32.const 8792) "2194") + (data (i32.const 8796) "2195") + (data (i32.const 8800) "2196") + (data (i32.const 8804) "2197") + (data (i32.const 8808) "2198") + (data (i32.const 8812) "2199") + (data (i32.const 8816) "2200") + (data (i32.const 8820) "2201") + (data (i32.const 8824) "2202") + (data (i32.const 8828) "2203") + (data (i32.const 8832) "2204") + (data (i32.const 8836) "2205") + (data (i32.const 8840) "2206") + (data (i32.const 8844) "2207") + (data (i32.const 8848) "2208") + (data (i32.const 8852) "2209") + (data (i32.const 8856) "2210") + (data (i32.const 8860) "2211") + (data (i32.const 8864) "2212") + (data (i32.const 8868) "2213") + (data (i32.const 8872) "2214") + (data (i32.const 8876) "2215") + (data (i32.const 8880) "2216") + (data (i32.const 8884) "2217") + (data (i32.const 8888) "2218") + (data (i32.const 8892) "2219") + (data (i32.const 8896) "2220") + (data (i32.const 8900) "2221") + (data (i32.const 8904) "2222") + (data (i32.const 8908) "2223") + (data (i32.const 8912) "2224") + (data (i32.const 8916) "2225") + (data (i32.const 8920) "2226") + (data (i32.const 8924) "2227") + (data (i32.const 8928) "2228") + (data (i32.const 8932) "2229") + (data (i32.const 8936) "2230") + (data (i32.const 8940) "2231") + (data (i32.const 8944) "2232") + (data (i32.const 8948) "2233") + (data (i32.const 8952) "2234") + (data (i32.const 8956) "2235") + (data (i32.const 8960) "2236") + (data (i32.const 8964) "2237") + (data (i32.const 8968) "2238") + (data (i32.const 8972) "2239") + (data (i32.const 8976) "2240") + (data (i32.const 8980) "2241") + (data (i32.const 8984) "2242") + (data (i32.const 8988) "2243") + (data (i32.const 8992) "2244") + (data (i32.const 8996) "2245") + (data (i32.const 9000) "2246") + (data (i32.const 9004) "2247") + (data (i32.const 9008) "2248") + (data (i32.const 9012) "2249") + (data (i32.const 9016) "2250") + (data (i32.const 9020) "2251") + (data (i32.const 9024) "2252") + (data (i32.const 9028) "2253") + (data (i32.const 9032) "2254") + (data (i32.const 9036) "2255") + (data (i32.const 9040) "2256") + (data (i32.const 9044) "2257") + (data (i32.const 9048) "2258") + (data (i32.const 9052) "2259") + (data (i32.const 9056) "2260") + (data (i32.const 9060) "2261") + (data (i32.const 9064) "2262") + (data (i32.const 9068) "2263") + (data (i32.const 9072) "2264") + (data (i32.const 9076) "2265") + (data (i32.const 9080) "2266") + (data (i32.const 9084) "2267") + (data (i32.const 9088) "2268") + (data (i32.const 9092) "2269") + (data (i32.const 9096) "2270") + (data (i32.const 9100) "2271") + (data (i32.const 9104) "2272") + (data (i32.const 9108) "2273") + (data (i32.const 9112) "2274") + (data (i32.const 9116) "2275") + (data (i32.const 9120) "2276") + (data (i32.const 9124) "2277") + (data (i32.const 9128) "2278") + (data (i32.const 9132) "2279") + (data (i32.const 9136) "2280") + (data (i32.const 9140) "2281") + (data (i32.const 9144) "2282") + (data (i32.const 9148) "2283") + (data (i32.const 9152) "2284") + (data (i32.const 9156) "2285") + (data (i32.const 9160) "2286") + (data (i32.const 9164) "2287") + (data (i32.const 9168) "2288") + (data (i32.const 9172) "2289") + (data (i32.const 9176) "2290") + (data (i32.const 9180) "2291") + (data (i32.const 9184) "2292") + (data (i32.const 9188) "2293") + (data (i32.const 9192) "2294") + (data (i32.const 9196) "2295") + (data (i32.const 9200) "2296") + (data (i32.const 9204) "2297") + (data (i32.const 9208) "2298") + (data (i32.const 9212) "2299") + (data (i32.const 9216) "2300") + (data (i32.const 9220) "2301") + (data (i32.const 9224) "2302") + (data (i32.const 9228) "2303") + (data (i32.const 9232) "2304") + (data (i32.const 9236) "2305") + (data (i32.const 9240) "2306") + (data (i32.const 9244) "2307") + (data (i32.const 9248) "2308") + (data (i32.const 9252) "2309") + (data (i32.const 9256) "2310") + (data (i32.const 9260) "2311") + (data (i32.const 9264) "2312") + (data (i32.const 9268) "2313") + (data (i32.const 9272) "2314") + (data (i32.const 9276) "2315") + (data (i32.const 9280) "2316") + (data (i32.const 9284) "2317") + (data (i32.const 9288) "2318") + (data (i32.const 9292) "2319") + (data (i32.const 9296) "2320") + (data (i32.const 9300) "2321") + (data (i32.const 9304) "2322") + (data (i32.const 9308) "2323") + (data (i32.const 9312) "2324") + (data (i32.const 9316) "2325") + (data (i32.const 9320) "2326") + (data (i32.const 9324) "2327") + (data (i32.const 9328) "2328") + (data (i32.const 9332) "2329") + (data (i32.const 9336) "2330") + (data (i32.const 9340) "2331") + (data (i32.const 9344) "2332") + (data (i32.const 9348) "2333") + (data (i32.const 9352) "2334") + (data (i32.const 9356) "2335") + (data (i32.const 9360) "2336") + (data (i32.const 9364) "2337") + (data (i32.const 9368) "2338") + (data (i32.const 9372) "2339") + (data (i32.const 9376) "2340") + (data (i32.const 9380) "2341") + (data (i32.const 9384) "2342") + (data (i32.const 9388) "2343") + (data (i32.const 9392) "2344") + (data (i32.const 9396) "2345") + (data (i32.const 9400) "2346") + (data (i32.const 9404) "2347") + (data (i32.const 9408) "2348") + (data (i32.const 9412) "2349") + (data (i32.const 9416) "2350") + (data (i32.const 9420) "2351") + (data (i32.const 9424) "2352") + (data (i32.const 9428) "2353") + (data (i32.const 9432) "2354") + (data (i32.const 9436) "2355") + (data (i32.const 9440) "2356") + (data (i32.const 9444) "2357") + (data (i32.const 9448) "2358") + (data (i32.const 9452) "2359") + (data (i32.const 9456) "2360") + (data (i32.const 9460) "2361") + (data (i32.const 9464) "2362") + (data (i32.const 9468) "2363") + (data (i32.const 9472) "2364") + (data (i32.const 9476) "2365") + (data (i32.const 9480) "2366") + (data (i32.const 9484) "2367") + (data (i32.const 9488) "2368") + (data (i32.const 9492) "2369") + (data (i32.const 9496) "2370") + (data (i32.const 9500) "2371") + (data (i32.const 9504) "2372") + (data (i32.const 9508) "2373") + (data (i32.const 9512) "2374") + (data (i32.const 9516) "2375") + (data (i32.const 9520) "2376") + (data (i32.const 9524) "2377") + (data (i32.const 9528) "2378") + (data (i32.const 9532) "2379") + (data (i32.const 9536) "2380") + (data (i32.const 9540) "2381") + (data (i32.const 9544) "2382") + (data (i32.const 9548) "2383") + (data (i32.const 9552) "2384") + (data (i32.const 9556) "2385") + (data (i32.const 9560) "2386") + (data (i32.const 9564) "2387") + (data (i32.const 9568) "2388") + (data (i32.const 9572) "2389") + (data (i32.const 9576) "2390") + (data (i32.const 9580) "2391") + (data (i32.const 9584) "2392") + (data (i32.const 9588) "2393") + (data (i32.const 9592) "2394") + (data (i32.const 9596) "2395") + (data (i32.const 9600) "2396") + (data (i32.const 9604) "2397") + (data (i32.const 9608) "2398") + (data (i32.const 9612) "2399") + (data (i32.const 9616) "2400") + (data (i32.const 9620) "2401") + (data (i32.const 9624) "2402") + (data (i32.const 9628) "2403") + (data (i32.const 9632) "2404") + (data (i32.const 9636) "2405") + (data (i32.const 9640) "2406") + (data (i32.const 9644) "2407") + (data (i32.const 9648) "2408") + (data (i32.const 9652) "2409") + (data (i32.const 9656) "2410") + (data (i32.const 9660) "2411") + (data (i32.const 9664) "2412") + (data (i32.const 9668) "2413") + (data (i32.const 9672) "2414") + (data (i32.const 9676) "2415") + (data (i32.const 9680) "2416") + (data (i32.const 9684) "2417") + (data (i32.const 9688) "2418") + (data (i32.const 9692) "2419") + (data (i32.const 9696) "2420") + (data (i32.const 9700) "2421") + (data (i32.const 9704) "2422") + (data (i32.const 9708) "2423") + (data (i32.const 9712) "2424") + (data (i32.const 9716) "2425") + (data (i32.const 9720) "2426") + (data (i32.const 9724) "2427") + (data (i32.const 9728) "2428") + (data (i32.const 9732) "2429") + (data (i32.const 9736) "2430") + (data (i32.const 9740) "2431") + (data (i32.const 9744) "2432") + (data (i32.const 9748) "2433") + (data (i32.const 9752) "2434") + (data (i32.const 9756) "2435") + (data (i32.const 9760) "2436") + (data (i32.const 9764) "2437") + (data (i32.const 9768) "2438") + (data (i32.const 9772) "2439") + (data (i32.const 9776) "2440") + (data (i32.const 9780) "2441") + (data (i32.const 9784) "2442") + (data (i32.const 9788) "2443") + (data (i32.const 9792) "2444") + (data (i32.const 9796) "2445") + (data (i32.const 9800) "2446") + (data (i32.const 9804) "2447") + (data (i32.const 9808) "2448") + (data (i32.const 9812) "2449") + (data (i32.const 9816) "2450") + (data (i32.const 9820) "2451") + (data (i32.const 9824) "2452") + (data (i32.const 9828) "2453") + (data (i32.const 9832) "2454") + (data (i32.const 9836) "2455") + (data (i32.const 9840) "2456") + (data (i32.const 9844) "2457") + (data (i32.const 9848) "2458") + (data (i32.const 9852) "2459") + (data (i32.const 9856) "2460") + (data (i32.const 9860) "2461") + (data (i32.const 9864) "2462") + (data (i32.const 9868) "2463") + (data (i32.const 9872) "2464") + (data (i32.const 9876) "2465") + (data (i32.const 9880) "2466") + (data (i32.const 9884) "2467") + (data (i32.const 9888) "2468") + (data (i32.const 9892) "2469") + (data (i32.const 9896) "2470") + (data (i32.const 9900) "2471") + (data (i32.const 9904) "2472") + (data (i32.const 9908) "2473") + (data (i32.const 9912) "2474") + (data (i32.const 9916) "2475") + (data (i32.const 9920) "2476") + (data (i32.const 9924) "2477") + (data (i32.const 9928) "2478") + (data (i32.const 9932) "2479") + (data (i32.const 9936) "2480") + (data (i32.const 9940) "2481") + (data (i32.const 9944) "2482") + (data (i32.const 9948) "2483") + (data (i32.const 9952) "2484") + (data (i32.const 9956) "2485") + (data (i32.const 9960) "2486") + (data (i32.const 9964) "2487") + (data (i32.const 9968) "2488") + (data (i32.const 9972) "2489") + (data (i32.const 9976) "2490") + (data (i32.const 9980) "2491") + (data (i32.const 9984) "2492") + (data (i32.const 9988) "2493") + (data (i32.const 9992) "2494") + (data (i32.const 9996) "2495") + (data (i32.const 10000) "2496") + (data (i32.const 10004) "2497") + (data (i32.const 10008) "2498") + (data (i32.const 10012) "2499") + (data (i32.const 10016) "2500") + (export "add" (func $add)) + (export "sub" (func $sub)) + (export "mul" (func $mul)) + (export "div" (func $div)) + (export "sqrt" (func $sqrt)) + (export "min" (func $min)) + (export "max" (func $max)) + (export "ceil" (func $ceil)) + (export "floor" (func $floor)) + (export "trunc" (func $trunc)) + (export "nearest" (func $nearest)) + (export "is_nan" (func $is_nan)) + (export "apply" (func $apply)) + (export "assert_return" (func $assert_return)) + (export "assert_return_nan" (func $assert_return_nan)) + (func $assert_return (param $0 f64) (param $1 f64 ) (param $2 i32) (call $eosio_assert(i64.eq (i64.reinterpret/f64 (get_local $0)) (i64.reinterpret/f64 (get_local $1))) (get_local $2))) + (func $is_nan (param $0 f64) (result i32) + (i64.gt_u + (i64.and + (i64.reinterpret/f64 + (get_local $0) + ) + (i64.const 9223372036854775807) + ) + (i64.const 9218868437227405312) + ) + ) + (func $assert_return_nan (param $0 f64) (param $1 i32)( call $eosio_assert (call $is_nan (get_local $0)) (get_local $1))) + (func $add (param $0 f64) (param $1 f64) (result f64) (f64.add (get_local $0) (get_local $1))) + (func $sub (param $0 f64) (param $1 f64) (result f64) (f64.sub (get_local $0) (get_local $1))) + (func $mul (param $0 f64) (param $1 f64) (result f64) (f64.mul (get_local $0) (get_local $1))) + (func $div (param $0 f64) (param $1 f64) (result f64) (f64.div (get_local $0) (get_local $1))) + (func $sqrt (param $0 f64) (result f64) (f64.sqrt (get_local $0))) + (func $min (param $0 f64) (param $1 f64) (result f64) (f64.min (get_local $0) (get_local $1))) + (func $max (param $0 f64) (param $1 f64) (result f64) (f64.max (get_local $0) (get_local $1))) + (func $ceil (param $0 f64) (result f64) (f64.ceil (get_local $0))) + (func $floor (param $0 f64) (result f64) (f64.floor (get_local $0))) + (func $trunc (param $0 f64) (result f64) (f64.trunc (get_local $0))) + (func $nearest (param $0 f64) (result f64) (f64.nearest (get_local $0))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 20)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 24)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 28)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 32)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 36)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 40)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 44)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 48)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 52)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 56)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 60)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 64)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 68)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 72)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 76)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 80)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 84)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 88)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 92)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 96)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 100)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 104)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 108)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 112)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 116)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 120)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 124)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 128)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const -inf)) (f64.const -inf) (i32.const 132)) + (call $assert_return (call $add (f64.const -0x0p+0) (f64.const inf)) (f64.const inf) (i32.const 136)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const -inf)) (f64.const -inf) (i32.const 140)) + (call $assert_return (call $add (f64.const 0x0p+0) (f64.const inf)) (f64.const inf) (i32.const 144)) + (call $assert_return_nan (call $add (f64.const -0x0p+0) (f64.const -nan)) (i32.const 148)) + (call $assert_return_nan (call $add (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 152)) + (call $assert_return_nan (call $add (f64.const -0x0p+0) (f64.const nan)) (i32.const 156)) + (call $assert_return_nan (call $add (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 160)) + (call $assert_return_nan (call $add (f64.const 0x0p+0) (f64.const -nan)) (i32.const 164)) + (call $assert_return_nan (call $add (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 168)) + (call $assert_return_nan (call $add (f64.const 0x0p+0) (f64.const nan)) (i32.const 172)) + (call $assert_return_nan (call $add (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 176)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 180)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 184)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 188)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 192)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000002p-1022) (i32.const 196)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 200)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 204)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000002p-1022) (i32.const 208)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1.0000000000001p-1022) (i32.const 212)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.fffffffffffffp-1022) (i32.const 216)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.fffffffffffffp-1022) (i32.const 220)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1.0000000000001p-1022) (i32.const 224)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 228)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 232)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 236)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 240)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 244)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 248)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 252)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 256)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 260)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 264)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 268)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 272)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 276)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 280)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 284)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 288)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 292)) + (call $assert_return (call $add (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf) (i32.const 296)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 300)) + (call $assert_return (call $add (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf) (i32.const 304)) + (call $assert_return_nan (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 308)) + (call $assert_return_nan (call $add (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 312)) + (call $assert_return_nan (call $add (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 316)) + (call $assert_return_nan (call $add (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 320)) + (call $assert_return_nan (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 324)) + (call $assert_return_nan (call $add (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 328)) + (call $assert_return_nan (call $add (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 332)) + (call $assert_return_nan (call $add (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 336)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022) (i32.const 340)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022) (i32.const 344)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022) (i32.const 348)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022) (i32.const 352)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.0000000000001p-1022) (i32.const 356)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.fffffffffffffp-1022) (i32.const 360)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022) (i32.const 364)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.0000000000001p-1022) (i32.const 368)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1021) (i32.const 372)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 376)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 380)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1021) (i32.const 384)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 388)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 392)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 396)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 400)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 404)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 408)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 412)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 416)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 420)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 424)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 428)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 432)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 436)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 440)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 444)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 448)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 452)) + (call $assert_return (call $add (f64.const -0x1p-1022) (f64.const inf)) (f64.const inf) (i32.const 456)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 460)) + (call $assert_return (call $add (f64.const 0x1p-1022) (f64.const inf)) (f64.const inf) (i32.const 464)) + (call $assert_return_nan (call $add (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 468)) + (call $assert_return_nan (call $add (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 472)) + (call $assert_return_nan (call $add (f64.const -0x1p-1022) (f64.const nan)) (i32.const 476)) + (call $assert_return_nan (call $add (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 480)) + (call $assert_return_nan (call $add (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 484)) + (call $assert_return_nan (call $add (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 488)) + (call $assert_return_nan (call $add (f64.const 0x1p-1022) (f64.const nan)) (i32.const 492)) + (call $assert_return_nan (call $add (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 496)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1) (i32.const 500)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1) (i32.const 504)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1) (i32.const 508)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1) (i32.const 512)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 516)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 520)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 524)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 528)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1) (i32.const 532)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1) (i32.const 536)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1) (i32.const 540)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1) (i32.const 544)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p+0) (i32.const 548)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 552)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x0p+0) (i32.const 556)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p+0) (i32.const 560)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1.8p+0) (i32.const 564)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1) (i32.const 568)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1) (i32.const 572)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1.8p+0) (i32.const 576)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.b21fb54442d18p+2) (i32.const 580)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.721fb54442d18p+2) (i32.const 584)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.721fb54442d18p+2) (i32.const 588)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.b21fb54442d18p+2) (i32.const 592)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 596)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 600)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 604)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 608)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const -inf)) (f64.const -inf) (i32.const 612)) + (call $assert_return (call $add (f64.const -0x1p-1) (f64.const inf)) (f64.const inf) (i32.const 616)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const -inf)) (f64.const -inf) (i32.const 620)) + (call $assert_return (call $add (f64.const 0x1p-1) (f64.const inf)) (f64.const inf) (i32.const 624)) + (call $assert_return_nan (call $add (f64.const -0x1p-1) (f64.const -nan)) (i32.const 628)) + (call $assert_return_nan (call $add (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 632)) + (call $assert_return_nan (call $add (f64.const -0x1p-1) (f64.const nan)) (i32.const 636)) + (call $assert_return_nan (call $add (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 640)) + (call $assert_return_nan (call $add (f64.const 0x1p-1) (f64.const -nan)) (i32.const 644)) + (call $assert_return_nan (call $add (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 648)) + (call $assert_return_nan (call $add (f64.const 0x1p-1) (f64.const nan)) (i32.const 652)) + (call $assert_return_nan (call $add (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 656)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0) (i32.const 660)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0) (i32.const 664)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0) (i32.const 668)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0) (i32.const 672)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 676)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 680)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 684)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 688)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 692)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0) (i32.const 696)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0) (i32.const 700)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 704)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1.8p+0) (i32.const 708)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 712)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 716)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1.8p+0) (i32.const 720)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+1) (i32.const 724)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 728)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0) (i32.const 732)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+1) (i32.const 736)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.d21fb54442d18p+2) (i32.const 740)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.521fb54442d18p+2) (i32.const 744)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.521fb54442d18p+2) (i32.const 748)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.d21fb54442d18p+2) (i32.const 752)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 756)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 760)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 764)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 768)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const -inf)) (f64.const -inf) (i32.const 772)) + (call $assert_return (call $add (f64.const -0x1p+0) (f64.const inf)) (f64.const inf) (i32.const 776)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const -inf)) (f64.const -inf) (i32.const 780)) + (call $assert_return (call $add (f64.const 0x1p+0) (f64.const inf)) (f64.const inf) (i32.const 784)) + (call $assert_return_nan (call $add (f64.const -0x1p+0) (f64.const -nan)) (i32.const 788)) + (call $assert_return_nan (call $add (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 792)) + (call $assert_return_nan (call $add (f64.const -0x1p+0) (f64.const nan)) (i32.const 796)) + (call $assert_return_nan (call $add (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 800)) + (call $assert_return_nan (call $add (f64.const 0x1p+0) (f64.const -nan)) (i32.const 804)) + (call $assert_return_nan (call $add (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 808)) + (call $assert_return_nan (call $add (f64.const 0x1p+0) (f64.const nan)) (i32.const 812)) + (call $assert_return_nan (call $add (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 816)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 820)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 824)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 828)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 832)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 836)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 840)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 844)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 848)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 852)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 856)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 860)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 864)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.b21fb54442d18p+2) (i32.const 868)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.721fb54442d18p+2) (i32.const 872)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.721fb54442d18p+2) (i32.const 876)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.b21fb54442d18p+2) (i32.const 880)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.d21fb54442d18p+2) (i32.const 884)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.521fb54442d18p+2) (i32.const 888)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.521fb54442d18p+2) (i32.const 892)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.d21fb54442d18p+2) (i32.const 896)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+3) (i32.const 900)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 904)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 908)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+3) (i32.const 912)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 916)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 920)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 924)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 928)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf) (i32.const 932)) + (call $assert_return (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf) (i32.const 936)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf) (i32.const 940)) + (call $assert_return (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf) (i32.const 944)) + (call $assert_return_nan (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 948)) + (call $assert_return_nan (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 952)) + (call $assert_return_nan (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 956)) + (call $assert_return_nan (call $add (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 960)) + (call $assert_return_nan (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 964)) + (call $assert_return_nan (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 968)) + (call $assert_return_nan (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 972)) + (call $assert_return_nan (call $add (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 976)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 980)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 984)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 988)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 992)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 996)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1000)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1004)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1008)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1012)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1016)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1020)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1024)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1028)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1032)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1036)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1040)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1044)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1048)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1052)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1056)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1060)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1064)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1068)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1072)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 1076)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 1080)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 1084)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 1088)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf) (i32.const 1092)) + (call $assert_return (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf) (i32.const 1096)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf) (i32.const 1100)) + (call $assert_return (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf) (i32.const 1104)) + (call $assert_return_nan (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1108)) + (call $assert_return_nan (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 1112)) + (call $assert_return_nan (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1116)) + (call $assert_return_nan (call $add (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 1120)) + (call $assert_return_nan (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1124)) + (call $assert_return_nan (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 1128)) + (call $assert_return_nan (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1132)) + (call $assert_return_nan (call $add (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 1136)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 1140)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 1144)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x0p+0)) (f64.const inf) (i32.const 1148)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x0p+0)) (f64.const inf) (i32.const 1152)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 1156)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 1160)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 1164)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 1168)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 1172)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 1176)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 1180)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 1184)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 1188)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf) (i32.const 1192)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x1p-1)) (f64.const inf) (i32.const 1196)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 1200)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 1204)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf) (i32.const 1208)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x1p+0)) (f64.const inf) (i32.const 1212)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 1216)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 1220)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 1224)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 1228)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 1232)) + (call $assert_return (call $add (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 1236)) + (call $assert_return (call $add (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 1240)) + (call $assert_return (call $add (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 1244)) + (call $assert_return (call $add (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 1248)) + (call $assert_return (call $add (f64.const -inf) (f64.const -inf)) (f64.const -inf) (i32.const 1252)) + (call $assert_return_nan (call $add (f64.const -inf) (f64.const inf)) (i32.const 1256)) + (call $assert_return_nan (call $add (f64.const inf) (f64.const -inf)) (i32.const 1260)) + (call $assert_return (call $add (f64.const inf) (f64.const inf)) (f64.const inf) (i32.const 1264)) + (call $assert_return_nan (call $add (f64.const -inf) (f64.const -nan)) (i32.const 1268)) + (call $assert_return_nan (call $add (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 1272)) + (call $assert_return_nan (call $add (f64.const -inf) (f64.const nan)) (i32.const 1276)) + (call $assert_return_nan (call $add (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 1280)) + (call $assert_return_nan (call $add (f64.const inf) (f64.const -nan)) (i32.const 1284)) + (call $assert_return_nan (call $add (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 1288)) + (call $assert_return_nan (call $add (f64.const inf) (f64.const nan)) (i32.const 1292)) + (call $assert_return_nan (call $add (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 1296)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x0p+0)) (i32.const 1300)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 1304)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x0p+0)) (i32.const 1308)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 1312)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x0p+0)) (i32.const 1316)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 1320)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x0p+0)) (i32.const 1324)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 1328)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1332)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 1336)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1340)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 1344)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1348)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 1352)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1356)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 1360)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 1364)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 1368)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 1372)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 1376)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x1p-1022)) (i32.const 1380)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 1384)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x1p-1022)) (i32.const 1388)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 1392)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x1p-1)) (i32.const 1396)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 1400)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x1p-1)) (i32.const 1404)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 1408)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x1p-1)) (i32.const 1412)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 1416)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x1p-1)) (i32.const 1420)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 1424)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x1p+0)) (i32.const 1428)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 1432)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x1p+0)) (i32.const 1436)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 1440)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x1p+0)) (i32.const 1444)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 1448)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x1p+0)) (i32.const 1452)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 1456)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1460)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1464)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1468)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1472)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1476)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1480)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1484)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1488)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1492)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1496)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1500)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1504)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1508)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1512)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1516)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1520)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -inf)) (i32.const 1524)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 1528)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const inf)) (i32.const 1532)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 1536)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -inf)) (i32.const 1540)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 1544)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const inf)) (i32.const 1548)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 1552)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -nan)) (i32.const 1556)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 1560)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 1564)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 1568)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const nan)) (i32.const 1572)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 1576)) + (call $assert_return_nan (call $add (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 1580)) + (call $assert_return_nan (call $add (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 1584)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -nan)) (i32.const 1588)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 1592)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 1596)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 1600)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const nan)) (i32.const 1604)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 1608)) + (call $assert_return_nan (call $add (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 1612)) + (call $assert_return_nan (call $add (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 1616)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 1620)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 1624)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 1628)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 1632)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 1636)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 1640)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 1644)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 1648)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022) (i32.const 1652)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022) (i32.const 1656)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022) (i32.const 1660)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022) (i32.const 1664)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1668)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 1672)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1676)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 1680)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 1684)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 1688)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 1692)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 1696)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1700)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 1704)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1708)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 1712)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1716)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1720)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1724)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1728)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const -inf)) (f64.const inf) (i32.const 1732)) + (call $assert_return (call $sub (f64.const -0x0p+0) (f64.const inf)) (f64.const -inf) (i32.const 1736)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const -inf)) (f64.const inf) (i32.const 1740)) + (call $assert_return (call $sub (f64.const 0x0p+0) (f64.const inf)) (f64.const -inf) (i32.const 1744)) + (call $assert_return_nan (call $sub (f64.const -0x0p+0) (f64.const -nan)) (i32.const 1748)) + (call $assert_return_nan (call $sub (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 1752)) + (call $assert_return_nan (call $sub (f64.const -0x0p+0) (f64.const nan)) (i32.const 1756)) + (call $assert_return_nan (call $sub (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 1760)) + (call $assert_return_nan (call $sub (f64.const 0x0p+0) (f64.const -nan)) (i32.const 1764)) + (call $assert_return_nan (call $sub (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 1768)) + (call $assert_return_nan (call $sub (f64.const 0x0p+0) (f64.const nan)) (i32.const 1772)) + (call $assert_return_nan (call $sub (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 1776)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 1780)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 1784)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 1788)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 1792)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 1796)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000002p-1022) (i32.const 1800)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000002p-1022) (i32.const 1804)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 1808)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0.fffffffffffffp-1022) (i32.const 1812)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x1.0000000000001p-1022) (i32.const 1816)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x1.0000000000001p-1022) (i32.const 1820)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0.fffffffffffffp-1022) (i32.const 1824)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1828)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 1832)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1836)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 1840)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 1844)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 1848)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 1852)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 1856)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1860)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 1864)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1868)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 1872)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1876)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1880)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1884)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1888)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const inf) (i32.const 1892)) + (call $assert_return (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -inf) (i32.const 1896)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const inf) (i32.const 1900)) + (call $assert_return (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const -inf) (i32.const 1904)) + (call $assert_return_nan (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1908)) + (call $assert_return_nan (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1912)) + (call $assert_return_nan (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1916)) + (call $assert_return_nan (call $sub (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 1920)) + (call $assert_return_nan (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1924)) + (call $assert_return_nan (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1928)) + (call $assert_return_nan (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1932)) + (call $assert_return_nan (call $sub (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 1936)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022) (i32.const 1940)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022) (i32.const 1944)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022) (i32.const 1948)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022) (i32.const 1952)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.fffffffffffffp-1022) (i32.const 1956)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.0000000000001p-1022) (i32.const 1960)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.0000000000001p-1022) (i32.const 1964)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022) (i32.const 1968)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 1972)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-1021) (i32.const 1976)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-1021) (i32.const 1980)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 1984)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1988)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 1992)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1996)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 2000)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 2004)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 2008)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 2012)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 2016)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2020)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2024)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2028)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2032)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2036)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2040)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2044)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2048)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const -inf)) (f64.const inf) (i32.const 2052)) + (call $assert_return (call $sub (f64.const -0x1p-1022) (f64.const inf)) (f64.const -inf) (i32.const 2056)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const -inf)) (f64.const inf) (i32.const 2060)) + (call $assert_return (call $sub (f64.const 0x1p-1022) (f64.const inf)) (f64.const -inf) (i32.const 2064)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 2068)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 2072)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1022) (f64.const nan)) (i32.const 2076)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 2080)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 2084)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 2088)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1022) (f64.const nan)) (i32.const 2092)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 2096)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1) (i32.const 2100)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1) (i32.const 2104)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1) (i32.const 2108)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1) (i32.const 2112)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 2116)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 2120)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 2124)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 2128)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1) (i32.const 2132)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1) (i32.const 2136)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1) (i32.const 2140)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1) (i32.const 2144)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x0p+0) (i32.const 2148)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p+0) (i32.const 2152)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p+0) (i32.const 2156)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 2160)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1) (i32.const 2164)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1.8p+0) (i32.const 2168)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1.8p+0) (i32.const 2172)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1) (i32.const 2176)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.721fb54442d18p+2) (i32.const 2180)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.b21fb54442d18p+2) (i32.const 2184)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.b21fb54442d18p+2) (i32.const 2188)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.721fb54442d18p+2) (i32.const 2192)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2196)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2200)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2204)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2208)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const -inf)) (f64.const inf) (i32.const 2212)) + (call $assert_return (call $sub (f64.const -0x1p-1) (f64.const inf)) (f64.const -inf) (i32.const 2216)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const -inf)) (f64.const inf) (i32.const 2220)) + (call $assert_return (call $sub (f64.const 0x1p-1) (f64.const inf)) (f64.const -inf) (i32.const 2224)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1) (f64.const -nan)) (i32.const 2228)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 2232)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1) (f64.const nan)) (i32.const 2236)) + (call $assert_return_nan (call $sub (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 2240)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1) (f64.const -nan)) (i32.const 2244)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 2248)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1) (f64.const nan)) (i32.const 2252)) + (call $assert_return_nan (call $sub (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 2256)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0) (i32.const 2260)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0) (i32.const 2264)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0) (i32.const 2268)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0) (i32.const 2272)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 2276)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 2280)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 2284)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 2288)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 2292)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0) (i32.const 2296)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0) (i32.const 2300)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 2304)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 2308)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1.8p+0) (i32.const 2312)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1.8p+0) (i32.const 2316)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 2320)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0) (i32.const 2324)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+1) (i32.const 2328)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+1) (i32.const 2332)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 2336)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.521fb54442d18p+2) (i32.const 2340)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.d21fb54442d18p+2) (i32.const 2344)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.d21fb54442d18p+2) (i32.const 2348)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.521fb54442d18p+2) (i32.const 2352)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2356)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2360)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2364)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2368)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const -inf)) (f64.const inf) (i32.const 2372)) + (call $assert_return (call $sub (f64.const -0x1p+0) (f64.const inf)) (f64.const -inf) (i32.const 2376)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const -inf)) (f64.const inf) (i32.const 2380)) + (call $assert_return (call $sub (f64.const 0x1p+0) (f64.const inf)) (f64.const -inf) (i32.const 2384)) + (call $assert_return_nan (call $sub (f64.const -0x1p+0) (f64.const -nan)) (i32.const 2388)) + (call $assert_return_nan (call $sub (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 2392)) + (call $assert_return_nan (call $sub (f64.const -0x1p+0) (f64.const nan)) (i32.const 2396)) + (call $assert_return_nan (call $sub (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 2400)) + (call $assert_return_nan (call $sub (f64.const 0x1p+0) (f64.const -nan)) (i32.const 2404)) + (call $assert_return_nan (call $sub (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 2408)) + (call $assert_return_nan (call $sub (f64.const 0x1p+0) (f64.const nan)) (i32.const 2412)) + (call $assert_return_nan (call $sub (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 2416)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2420)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2424)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2428)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2432)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2436)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2440)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2444)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2448)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2452)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 2456)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2460)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 2464)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.721fb54442d18p+2) (i32.const 2468)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.b21fb54442d18p+2) (i32.const 2472)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.b21fb54442d18p+2) (i32.const 2476)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.721fb54442d18p+2) (i32.const 2480)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.521fb54442d18p+2) (i32.const 2484)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.d21fb54442d18p+2) (i32.const 2488)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.d21fb54442d18p+2) (i32.const 2492)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.521fb54442d18p+2) (i32.const 2496)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 2500)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+3) (i32.const 2504)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+3) (i32.const 2508)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 2512)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2516)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2520)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2524)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2528)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const inf) (i32.const 2532)) + (call $assert_return (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -inf) (i32.const 2536)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const inf) (i32.const 2540)) + (call $assert_return (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -inf) (i32.const 2544)) + (call $assert_return_nan (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 2548)) + (call $assert_return_nan (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 2552)) + (call $assert_return_nan (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 2556)) + (call $assert_return_nan (call $sub (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 2560)) + (call $assert_return_nan (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 2564)) + (call $assert_return_nan (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 2568)) + (call $assert_return_nan (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 2572)) + (call $assert_return_nan (call $sub (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 2576)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2580)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2584)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2588)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2592)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2596)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2600)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2604)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2608)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2612)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2616)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2620)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2624)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2628)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2632)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2636)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2640)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2644)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2648)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2652)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2656)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2660)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 2664)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2668)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 2672)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 2676)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 2680)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 2684)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 2688)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const inf) (i32.const 2692)) + (call $assert_return (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -inf) (i32.const 2696)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const inf) (i32.const 2700)) + (call $assert_return (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -inf) (i32.const 2704)) + (call $assert_return_nan (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 2708)) + (call $assert_return_nan (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 2712)) + (call $assert_return_nan (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 2716)) + (call $assert_return_nan (call $sub (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 2720)) + (call $assert_return_nan (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 2724)) + (call $assert_return_nan (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 2728)) + (call $assert_return_nan (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 2732)) + (call $assert_return_nan (call $sub (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 2736)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 2740)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 2744)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x0p+0)) (f64.const inf) (i32.const 2748)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x0p+0)) (f64.const inf) (i32.const 2752)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 2756)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 2760)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 2764)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 2768)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 2772)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 2776)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 2780)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 2784)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 2788)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf) (i32.const 2792)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x1p-1)) (f64.const inf) (i32.const 2796)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 2800)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 2804)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf) (i32.const 2808)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x1p+0)) (f64.const inf) (i32.const 2812)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 2816)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 2820)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 2824)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 2828)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 2832)) + (call $assert_return (call $sub (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 2836)) + (call $assert_return (call $sub (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 2840)) + (call $assert_return (call $sub (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 2844)) + (call $assert_return (call $sub (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 2848)) + (call $assert_return_nan (call $sub (f64.const -inf) (f64.const -inf)) (i32.const 2852)) + (call $assert_return (call $sub (f64.const -inf) (f64.const inf)) (f64.const -inf) (i32.const 2856)) + (call $assert_return (call $sub (f64.const inf) (f64.const -inf)) (f64.const inf) (i32.const 2860)) + (call $assert_return_nan (call $sub (f64.const inf) (f64.const inf)) (i32.const 2864)) + (call $assert_return_nan (call $sub (f64.const -inf) (f64.const -nan)) (i32.const 2868)) + (call $assert_return_nan (call $sub (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 2872)) + (call $assert_return_nan (call $sub (f64.const -inf) (f64.const nan)) (i32.const 2876)) + (call $assert_return_nan (call $sub (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 2880)) + (call $assert_return_nan (call $sub (f64.const inf) (f64.const -nan)) (i32.const 2884)) + (call $assert_return_nan (call $sub (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 2888)) + (call $assert_return_nan (call $sub (f64.const inf) (f64.const nan)) (i32.const 2892)) + (call $assert_return_nan (call $sub (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 2896)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x0p+0)) (i32.const 2900)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 2904)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x0p+0)) (i32.const 2908)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 2912)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x0p+0)) (i32.const 2916)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 2920)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x0p+0)) (i32.const 2924)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 2928)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 2932)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 2936)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 2940)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 2944)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 2948)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 2952)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 2956)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 2960)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 2964)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 2968)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 2972)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 2976)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x1p-1022)) (i32.const 2980)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 2984)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x1p-1022)) (i32.const 2988)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 2992)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x1p-1)) (i32.const 2996)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 3000)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x1p-1)) (i32.const 3004)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 3008)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x1p-1)) (i32.const 3012)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 3016)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x1p-1)) (i32.const 3020)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 3024)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x1p+0)) (i32.const 3028)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 3032)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x1p+0)) (i32.const 3036)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 3040)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x1p+0)) (i32.const 3044)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 3048)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x1p+0)) (i32.const 3052)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 3056)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 3060)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 3064)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 3068)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 3072)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 3076)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 3080)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 3084)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 3088)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 3092)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 3096)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 3100)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 3104)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 3108)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 3112)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 3116)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 3120)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -inf)) (i32.const 3124)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 3128)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const inf)) (i32.const 3132)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 3136)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -inf)) (i32.const 3140)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 3144)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const inf)) (i32.const 3148)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 3152)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -nan)) (i32.const 3156)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 3160)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 3164)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 3168)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const nan)) (i32.const 3172)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 3176)) + (call $assert_return_nan (call $sub (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 3180)) + (call $assert_return_nan (call $sub (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 3184)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -nan)) (i32.const 3188)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 3192)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 3196)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 3200)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const nan)) (i32.const 3204)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 3208)) + (call $assert_return_nan (call $sub (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 3212)) + (call $assert_return_nan (call $sub (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 3216)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 3220)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 3224)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 3228)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 3232)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3236)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3240)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3244)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3248)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 3252)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0) (i32.const 3256)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 3260)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 3264)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0) (i32.const 3268)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0) (i32.const 3272)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 3276)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 3280)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0) (i32.const 3284)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0) (i32.const 3288)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0) (i32.const 3292)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 3296)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 3300)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 3304)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 3308)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 3312)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 3316)) + (call $assert_return (call $mul (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 3320)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 3324)) + (call $assert_return (call $mul (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 3328)) + (call $assert_return_nan (call $mul (f64.const -0x0p+0) (f64.const -inf)) (i32.const 3332)) + (call $assert_return_nan (call $mul (f64.const -0x0p+0) (f64.const inf)) (i32.const 3336)) + (call $assert_return_nan (call $mul (f64.const 0x0p+0) (f64.const -inf)) (i32.const 3340)) + (call $assert_return_nan (call $mul (f64.const 0x0p+0) (f64.const inf)) (i32.const 3344)) + (call $assert_return_nan (call $mul (f64.const -0x0p+0) (f64.const -nan)) (i32.const 3348)) + (call $assert_return_nan (call $mul (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 3352)) + (call $assert_return_nan (call $mul (f64.const -0x0p+0) (f64.const nan)) (i32.const 3356)) + (call $assert_return_nan (call $mul (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 3360)) + (call $assert_return_nan (call $mul (f64.const 0x0p+0) (f64.const -nan)) (i32.const 3364)) + (call $assert_return_nan (call $mul (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 3368)) + (call $assert_return_nan (call $mul (f64.const 0x0p+0) (f64.const nan)) (i32.const 3372)) + (call $assert_return_nan (call $mul (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 3376)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 3380)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 3384)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 3388)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 3392)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3396)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3400)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3404)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3408)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 3412)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0p+0) (i32.const 3416)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 3420)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 3424)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0p+0) (i32.const 3428)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0p+0) (i32.const 3432)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 3436)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 3440)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 3444)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 3448)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 3452)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 3456)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000006p-1022) (i32.const 3460)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000006p-1022) (i32.const 3464)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000006p-1022) (i32.const 3468)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000006p-1022) (i32.const 3472)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp-51) (i32.const 3476)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp-51) (i32.const 3480)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp-51) (i32.const 3484)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp-51) (i32.const 3488)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const inf) (i32.const 3492)) + (call $assert_return (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -inf) (i32.const 3496)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 3500)) + (call $assert_return (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf) (i32.const 3504)) + (call $assert_return_nan (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 3508)) + (call $assert_return_nan (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 3512)) + (call $assert_return_nan (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 3516)) + (call $assert_return_nan (call $mul (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 3520)) + (call $assert_return_nan (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 3524)) + (call $assert_return_nan (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 3528)) + (call $assert_return_nan (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 3532)) + (call $assert_return_nan (call $mul (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 3536)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 3540)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 3544)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 3548)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 3552)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3556)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3560)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3564)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3568)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 3572)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x0p+0) (i32.const 3576)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 3580)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 3584)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x0.8p-1022) (i32.const 3588)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x0.8p-1022) (i32.const 3592)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x0.8p-1022) (i32.const 3596)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x0.8p-1022) (i32.const 3600)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022) (i32.const 3604)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022) (i32.const 3608)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022) (i32.const 3612)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022) (i32.const 3616)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p-1020) (i32.const 3620)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p-1020) (i32.const 3624)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p-1020) (i32.const 3628)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p-1020) (i32.const 3632)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1) (i32.const 3636)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1) (i32.const 3640)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1) (i32.const 3644)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1) (i32.const 3648)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const -inf)) (f64.const inf) (i32.const 3652)) + (call $assert_return (call $mul (f64.const -0x1p-1022) (f64.const inf)) (f64.const -inf) (i32.const 3656)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 3660)) + (call $assert_return (call $mul (f64.const 0x1p-1022) (f64.const inf)) (f64.const inf) (i32.const 3664)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 3668)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 3672)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1022) (f64.const nan)) (i32.const 3676)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 3680)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 3684)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 3688)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1022) (f64.const nan)) (i32.const 3692)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 3696)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 3700)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 3704)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 3708)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 3712)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3716)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3720)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 3724)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 3728)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x0.8p-1022) (i32.const 3732)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x0.8p-1022) (i32.const 3736)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x0.8p-1022) (i32.const 3740)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x0.8p-1022) (i32.const 3744)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p-2) (i32.const 3748)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p-2) (i32.const 3752)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-2) (i32.const 3756)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-2) (i32.const 3760)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1) (i32.const 3764)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1) (i32.const 3768)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1) (i32.const 3772)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1) (i32.const 3776)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+1) (i32.const 3780)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+1) (i32.const 3784)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+1) (i32.const 3788)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+1) (i32.const 3792)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1022) (i32.const 3796)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1022) (i32.const 3800)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1022) (i32.const 3804)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1022) (i32.const 3808)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const -inf)) (f64.const inf) (i32.const 3812)) + (call $assert_return (call $mul (f64.const -0x1p-1) (f64.const inf)) (f64.const -inf) (i32.const 3816)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const -inf)) (f64.const -inf) (i32.const 3820)) + (call $assert_return (call $mul (f64.const 0x1p-1) (f64.const inf)) (f64.const inf) (i32.const 3824)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1) (f64.const -nan)) (i32.const 3828)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 3832)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1) (f64.const nan)) (i32.const 3836)) + (call $assert_return_nan (call $mul (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 3840)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1) (f64.const -nan)) (i32.const 3844)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 3848)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1) (f64.const nan)) (i32.const 3852)) + (call $assert_return_nan (call $mul (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 3856)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 3860)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 3864)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 3868)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 3872)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 3876)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 3880)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 3884)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 3888)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022) (i32.const 3892)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022) (i32.const 3896)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 3900)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 3904)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 3908)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 3912)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 3916)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 3920)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 3924)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 3928)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 3932)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 3936)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 3940)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 3944)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 3948)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 3952)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 3956)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 3960)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 3964)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 3968)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const -inf)) (f64.const inf) (i32.const 3972)) + (call $assert_return (call $mul (f64.const -0x1p+0) (f64.const inf)) (f64.const -inf) (i32.const 3976)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const -inf)) (f64.const -inf) (i32.const 3980)) + (call $assert_return (call $mul (f64.const 0x1p+0) (f64.const inf)) (f64.const inf) (i32.const 3984)) + (call $assert_return_nan (call $mul (f64.const -0x1p+0) (f64.const -nan)) (i32.const 3988)) + (call $assert_return_nan (call $mul (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 3992)) + (call $assert_return_nan (call $mul (f64.const -0x1p+0) (f64.const nan)) (i32.const 3996)) + (call $assert_return_nan (call $mul (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 4000)) + (call $assert_return_nan (call $mul (f64.const 0x1p+0) (f64.const -nan)) (i32.const 4004)) + (call $assert_return_nan (call $mul (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 4008)) + (call $assert_return_nan (call $mul (f64.const 0x1p+0) (f64.const nan)) (i32.const 4012)) + (call $assert_return_nan (call $mul (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 4016)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 4020)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 4024)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 4028)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 4032)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000006p-1022) (i32.const 4036)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000006p-1022) (i32.const 4040)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000006p-1022) (i32.const 4044)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000006p-1022) (i32.const 4048)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p-1020) (i32.const 4052)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p-1020) (i32.const 4056)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p-1020) (i32.const 4060)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p-1020) (i32.const 4064)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+1) (i32.const 4068)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+1) (i32.const 4072)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+1) (i32.const 4076)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+1) (i32.const 4080)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 4084)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 4088)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 4092)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 4096)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.3bd3cc9be45dep+5) (i32.const 4100)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.3bd3cc9be45dep+5) (i32.const 4104)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.3bd3cc9be45dep+5) (i32.const 4108)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.3bd3cc9be45dep+5) (i32.const 4112)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 4116)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 4120)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 4124)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 4128)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const inf) (i32.const 4132)) + (call $assert_return (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -inf) (i32.const 4136)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf) (i32.const 4140)) + (call $assert_return (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf) (i32.const 4144)) + (call $assert_return_nan (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 4148)) + (call $assert_return_nan (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 4152)) + (call $assert_return_nan (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 4156)) + (call $assert_return_nan (call $mul (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 4160)) + (call $assert_return_nan (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 4164)) + (call $assert_return_nan (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 4168)) + (call $assert_return_nan (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 4172)) + (call $assert_return_nan (call $mul (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 4176)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 4180)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 4184)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 4188)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 4192)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp-51) (i32.const 4196)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp-51) (i32.const 4200)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp-51) (i32.const 4204)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp-51) (i32.const 4208)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1) (i32.const 4212)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1) (i32.const 4216)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1) (i32.const 4220)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1) (i32.const 4224)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1022) (i32.const 4228)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1022) (i32.const 4232)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1022) (i32.const 4236)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1022) (i32.const 4240)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 4244)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 4248)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 4252)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 4256)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 4260)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 4264)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 4268)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 4272)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 4276)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 4280)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 4284)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 4288)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const inf) (i32.const 4292)) + (call $assert_return (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -inf) (i32.const 4296)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf) (i32.const 4300)) + (call $assert_return (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf) (i32.const 4304)) + (call $assert_return_nan (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 4308)) + (call $assert_return_nan (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 4312)) + (call $assert_return_nan (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 4316)) + (call $assert_return_nan (call $mul (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 4320)) + (call $assert_return_nan (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 4324)) + (call $assert_return_nan (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 4328)) + (call $assert_return_nan (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 4332)) + (call $assert_return_nan (call $mul (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 4336)) + (call $assert_return_nan (call $mul (f64.const -inf) (f64.const -0x0p+0)) (i32.const 4340)) + (call $assert_return_nan (call $mul (f64.const -inf) (f64.const 0x0p+0)) (i32.const 4344)) + (call $assert_return_nan (call $mul (f64.const inf) (f64.const -0x0p+0)) (i32.const 4348)) + (call $assert_return_nan (call $mul (f64.const inf) (f64.const 0x0p+0)) (i32.const 4352)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 4356)) + (call $assert_return (call $mul (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 4360)) + (call $assert_return (call $mul (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 4364)) + (call $assert_return (call $mul (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 4368)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 4372)) + (call $assert_return (call $mul (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 4376)) + (call $assert_return (call $mul (f64.const inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 4380)) + (call $assert_return (call $mul (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 4384)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -0x1p-1)) (f64.const inf) (i32.const 4388)) + (call $assert_return (call $mul (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf) (i32.const 4392)) + (call $assert_return (call $mul (f64.const inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 4396)) + (call $assert_return (call $mul (f64.const inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 4400)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -0x1p+0)) (f64.const inf) (i32.const 4404)) + (call $assert_return (call $mul (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf) (i32.const 4408)) + (call $assert_return (call $mul (f64.const inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 4412)) + (call $assert_return (call $mul (f64.const inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 4416)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 4420)) + (call $assert_return (call $mul (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 4424)) + (call $assert_return (call $mul (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 4428)) + (call $assert_return (call $mul (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 4432)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 4436)) + (call $assert_return (call $mul (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 4440)) + (call $assert_return (call $mul (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 4444)) + (call $assert_return (call $mul (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 4448)) + (call $assert_return (call $mul (f64.const -inf) (f64.const -inf)) (f64.const inf) (i32.const 4452)) + (call $assert_return (call $mul (f64.const -inf) (f64.const inf)) (f64.const -inf) (i32.const 4456)) + (call $assert_return (call $mul (f64.const inf) (f64.const -inf)) (f64.const -inf) (i32.const 4460)) + (call $assert_return (call $mul (f64.const inf) (f64.const inf)) (f64.const inf) (i32.const 4464)) + (call $assert_return_nan (call $mul (f64.const -inf) (f64.const -nan)) (i32.const 4468)) + (call $assert_return_nan (call $mul (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 4472)) + (call $assert_return_nan (call $mul (f64.const -inf) (f64.const nan)) (i32.const 4476)) + (call $assert_return_nan (call $mul (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 4480)) + (call $assert_return_nan (call $mul (f64.const inf) (f64.const -nan)) (i32.const 4484)) + (call $assert_return_nan (call $mul (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 4488)) + (call $assert_return_nan (call $mul (f64.const inf) (f64.const nan)) (i32.const 4492)) + (call $assert_return_nan (call $mul (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 4496)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x0p+0)) (i32.const 4500)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 4504)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x0p+0)) (i32.const 4508)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 4512)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x0p+0)) (i32.const 4516)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 4520)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x0p+0)) (i32.const 4524)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 4528)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 4532)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 4536)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 4540)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 4544)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 4548)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 4552)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 4556)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 4560)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 4564)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 4568)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 4572)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 4576)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x1p-1022)) (i32.const 4580)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 4584)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x1p-1022)) (i32.const 4588)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 4592)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x1p-1)) (i32.const 4596)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 4600)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x1p-1)) (i32.const 4604)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 4608)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x1p-1)) (i32.const 4612)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 4616)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x1p-1)) (i32.const 4620)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 4624)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x1p+0)) (i32.const 4628)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 4632)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x1p+0)) (i32.const 4636)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 4640)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x1p+0)) (i32.const 4644)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 4648)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x1p+0)) (i32.const 4652)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 4656)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 4660)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 4664)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 4668)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 4672)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 4676)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 4680)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 4684)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 4688)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 4692)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 4696)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 4700)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 4704)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 4708)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 4712)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 4716)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 4720)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -inf)) (i32.const 4724)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 4728)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const inf)) (i32.const 4732)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 4736)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -inf)) (i32.const 4740)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 4744)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const inf)) (i32.const 4748)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 4752)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -nan)) (i32.const 4756)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 4760)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 4764)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 4768)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const nan)) (i32.const 4772)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 4776)) + (call $assert_return_nan (call $mul (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 4780)) + (call $assert_return_nan (call $mul (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 4784)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -nan)) (i32.const 4788)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 4792)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 4796)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 4800)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const nan)) (i32.const 4804)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 4808)) + (call $assert_return_nan (call $mul (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 4812)) + (call $assert_return_nan (call $mul (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 4816)) + (call $assert_return_nan (call $div (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 4820)) + (call $assert_return_nan (call $div (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 4824)) + (call $assert_return_nan (call $div (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 4828)) + (call $assert_return_nan (call $div (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 4832)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 4836)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 4840)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 4844)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 4848)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 4852)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0) (i32.const 4856)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 4860)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 4864)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0) (i32.const 4868)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0) (i32.const 4872)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 4876)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 4880)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0) (i32.const 4884)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0) (i32.const 4888)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0) (i32.const 4892)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 4896)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 4900)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 4904)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 4908)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 4912)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 4916)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 4920)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 4924)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 4928)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 4932)) + (call $assert_return (call $div (f64.const -0x0p+0) (f64.const inf)) (f64.const -0x0p+0) (i32.const 4936)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 4940)) + (call $assert_return (call $div (f64.const 0x0p+0) (f64.const inf)) (f64.const 0x0p+0) (i32.const 4944)) + (call $assert_return_nan (call $div (f64.const -0x0p+0) (f64.const -nan)) (i32.const 4948)) + (call $assert_return_nan (call $div (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 4952)) + (call $assert_return_nan (call $div (f64.const -0x0p+0) (f64.const nan)) (i32.const 4956)) + (call $assert_return_nan (call $div (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 4960)) + (call $assert_return_nan (call $div (f64.const 0x0p+0) (f64.const -nan)) (i32.const 4964)) + (call $assert_return_nan (call $div (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 4968)) + (call $assert_return_nan (call $div (f64.const 0x0p+0) (f64.const nan)) (i32.const 4972)) + (call $assert_return_nan (call $div (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 4976)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const inf) (i32.const 4980)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 4984)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 4988)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const inf) (i32.const 4992)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 4996)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 5000)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 5004)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 5008)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-52) (i32.const 5012)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-52) (i32.const 5016)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-52) (i32.const 5020)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-52) (i32.const 5024)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0.0000000000002p-1022) (i32.const 5028)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0.0000000000002p-1022) (i32.const 5032)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000002p-1022) (i32.const 5036)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000002p-1022) (i32.const 5040)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 5044)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 5048)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 5052)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 5056)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 5060)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 5064)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 5068)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 5072)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 5076)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 5080)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 5084)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 5088)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 5092)) + (call $assert_return (call $div (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -0x0p+0) (i32.const 5096)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 5100)) + (call $assert_return (call $div (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0p+0) (i32.const 5104)) + (call $assert_return_nan (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 5108)) + (call $assert_return_nan (call $div (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 5112)) + (call $assert_return_nan (call $div (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 5116)) + (call $assert_return_nan (call $div (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 5120)) + (call $assert_return_nan (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 5124)) + (call $assert_return_nan (call $div (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 5128)) + (call $assert_return_nan (call $div (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 5132)) + (call $assert_return_nan (call $div (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 5136)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const inf) (i32.const 5140)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 5144)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 5148)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const inf) (i32.const 5152)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+52) (i32.const 5156)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+52) (i32.const 5160)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+52) (i32.const 5164)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+52) (i32.const 5168)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p+0) (i32.const 5172)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p+0) (i32.const 5176)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 5180)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 5184)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1021) (i32.const 5188)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1021) (i32.const 5192)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1021) (i32.const 5196)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1021) (i32.const 5200)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022) (i32.const 5204)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022) (i32.const 5208)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022) (i32.const 5212)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022) (i32.const 5216)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.28be60db9391p-1022) (i32.const 5220)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.28be60db9391p-1022) (i32.const 5224)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.28be60db9391p-1022) (i32.const 5228)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.28be60db9391p-1022) (i32.const 5232)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 5236)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 5240)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 5244)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 5248)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 5252)) + (call $assert_return (call $div (f64.const -0x1p-1022) (f64.const inf)) (f64.const -0x0p+0) (i32.const 5256)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 5260)) + (call $assert_return (call $div (f64.const 0x1p-1022) (f64.const inf)) (f64.const 0x0p+0) (i32.const 5264)) + (call $assert_return_nan (call $div (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 5268)) + (call $assert_return_nan (call $div (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 5272)) + (call $assert_return_nan (call $div (f64.const -0x1p-1022) (f64.const nan)) (i32.const 5276)) + (call $assert_return_nan (call $div (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 5280)) + (call $assert_return_nan (call $div (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 5284)) + (call $assert_return_nan (call $div (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 5288)) + (call $assert_return_nan (call $div (f64.const 0x1p-1022) (f64.const nan)) (i32.const 5292)) + (call $assert_return_nan (call $div (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 5296)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const inf) (i32.const 5300)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 5304)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 5308)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const inf) (i32.const 5312)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5316)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5320)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5324)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5328)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p+1021) (i32.const 5332)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p+1021) (i32.const 5336)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p+1021) (i32.const 5340)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p+1021) (i32.const 5344)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p+0) (i32.const 5348)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p+0) (i32.const 5352)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p+0) (i32.const 5356)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p+0) (i32.const 5360)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1) (i32.const 5364)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1) (i32.const 5368)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1) (i32.const 5372)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1) (i32.const 5376)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-4) (i32.const 5380)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-4) (i32.const 5384)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-4) (i32.const 5388)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-4) (i32.const 5392)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.2p-1022) (i32.const 5396)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.2p-1022) (i32.const 5400)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.2p-1022) (i32.const 5404)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.2p-1022) (i32.const 5408)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 5412)) + (call $assert_return (call $div (f64.const -0x1p-1) (f64.const inf)) (f64.const -0x0p+0) (i32.const 5416)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 5420)) + (call $assert_return (call $div (f64.const 0x1p-1) (f64.const inf)) (f64.const 0x0p+0) (i32.const 5424)) + (call $assert_return_nan (call $div (f64.const -0x1p-1) (f64.const -nan)) (i32.const 5428)) + (call $assert_return_nan (call $div (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 5432)) + (call $assert_return_nan (call $div (f64.const -0x1p-1) (f64.const nan)) (i32.const 5436)) + (call $assert_return_nan (call $div (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 5440)) + (call $assert_return_nan (call $div (f64.const 0x1p-1) (f64.const -nan)) (i32.const 5444)) + (call $assert_return_nan (call $div (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 5448)) + (call $assert_return_nan (call $div (f64.const 0x1p-1) (f64.const nan)) (i32.const 5452)) + (call $assert_return_nan (call $div (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 5456)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const inf) (i32.const 5460)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 5464)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 5468)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const inf) (i32.const 5472)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5476)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5480)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5484)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5488)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+1022) (i32.const 5492)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+1022) (i32.const 5496)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+1022) (i32.const 5500)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+1022) (i32.const 5504)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p+1) (i32.const 5508)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p+1) (i32.const 5512)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+1) (i32.const 5516)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+1) (i32.const 5520)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 5524)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 5528)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 5532)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 5536)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-3) (i32.const 5540)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-3) (i32.const 5544)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-3) (i32.const 5548)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-3) (i32.const 5552)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.4p-1022) (i32.const 5556)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.4p-1022) (i32.const 5560)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.4p-1022) (i32.const 5564)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.4p-1022) (i32.const 5568)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 5572)) + (call $assert_return (call $div (f64.const -0x1p+0) (f64.const inf)) (f64.const -0x0p+0) (i32.const 5576)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 5580)) + (call $assert_return (call $div (f64.const 0x1p+0) (f64.const inf)) (f64.const 0x0p+0) (i32.const 5584)) + (call $assert_return_nan (call $div (f64.const -0x1p+0) (f64.const -nan)) (i32.const 5588)) + (call $assert_return_nan (call $div (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 5592)) + (call $assert_return_nan (call $div (f64.const -0x1p+0) (f64.const nan)) (i32.const 5596)) + (call $assert_return_nan (call $div (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 5600)) + (call $assert_return_nan (call $div (f64.const 0x1p+0) (f64.const -nan)) (i32.const 5604)) + (call $assert_return_nan (call $div (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 5608)) + (call $assert_return_nan (call $div (f64.const 0x1p+0) (f64.const nan)) (i32.const 5612)) + (call $assert_return_nan (call $div (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 5616)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const inf) (i32.const 5620)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 5624)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 5628)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const inf) (i32.const 5632)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5636)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5640)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5644)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5648)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 5652)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 5656)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 5660)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 5664)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+3) (i32.const 5668)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+3) (i32.const 5672)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+3) (i32.const 5676)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+3) (i32.const 5680)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 5684)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 5688)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 5692)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 5696)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p+0) (i32.const 5700)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p+0) (i32.const 5704)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0) (i32.const 5708)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0) (i32.const 5712)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d19p-1022) (i32.const 5716)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d19p-1022) (i32.const 5720)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d19p-1022) (i32.const 5724)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d19p-1022) (i32.const 5728)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 5732)) + (call $assert_return (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -0x0p+0) (i32.const 5736)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 5740)) + (call $assert_return (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x0p+0) (i32.const 5744)) + (call $assert_return_nan (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 5748)) + (call $assert_return_nan (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 5752)) + (call $assert_return_nan (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 5756)) + (call $assert_return_nan (call $div (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 5760)) + (call $assert_return_nan (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 5764)) + (call $assert_return_nan (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 5768)) + (call $assert_return_nan (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 5772)) + (call $assert_return_nan (call $div (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 5776)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const inf) (i32.const 5780)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 5784)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 5788)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const inf) (i32.const 5792)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5796)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5800)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5804)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5808)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 5812)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 5816)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 5820)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 5824)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const inf) (i32.const 5828)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -inf) (i32.const 5832)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 5836)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const inf) (i32.const 5840)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 5844)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 5848)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 5852)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 5856)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c882p+1021) (i32.const 5860)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c882p+1021) (i32.const 5864)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c882p+1021) (i32.const 5868)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c882p+1021) (i32.const 5872)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p+0) (i32.const 5876)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p+0) (i32.const 5880)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0) (i32.const 5884)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0) (i32.const 5888)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 5892)) + (call $assert_return (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -0x0p+0) (i32.const 5896)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 5900)) + (call $assert_return (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x0p+0) (i32.const 5904)) + (call $assert_return_nan (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 5908)) + (call $assert_return_nan (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 5912)) + (call $assert_return_nan (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 5916)) + (call $assert_return_nan (call $div (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 5920)) + (call $assert_return_nan (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 5924)) + (call $assert_return_nan (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 5928)) + (call $assert_return_nan (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 5932)) + (call $assert_return_nan (call $div (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 5936)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x0p+0)) (f64.const inf) (i32.const 5940)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 5944)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 5948)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x0p+0)) (f64.const inf) (i32.const 5952)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5956)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5960)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 5964)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 5968)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 5972)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 5976)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 5980)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 5984)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x1p-1)) (f64.const inf) (i32.const 5988)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf) (i32.const 5992)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 5996)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 6000)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x1p+0)) (f64.const inf) (i32.const 6004)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf) (i32.const 6008)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 6012)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 6016)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 6020)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 6024)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 6028)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 6032)) + (call $assert_return (call $div (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 6036)) + (call $assert_return (call $div (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 6040)) + (call $assert_return (call $div (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 6044)) + (call $assert_return (call $div (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 6048)) + (call $assert_return_nan (call $div (f64.const -inf) (f64.const -inf)) (i32.const 6052)) + (call $assert_return_nan (call $div (f64.const -inf) (f64.const inf)) (i32.const 6056)) + (call $assert_return_nan (call $div (f64.const inf) (f64.const -inf)) (i32.const 6060)) + (call $assert_return_nan (call $div (f64.const inf) (f64.const inf)) (i32.const 6064)) + (call $assert_return_nan (call $div (f64.const -inf) (f64.const -nan)) (i32.const 6068)) + (call $assert_return_nan (call $div (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 6072)) + (call $assert_return_nan (call $div (f64.const -inf) (f64.const nan)) (i32.const 6076)) + (call $assert_return_nan (call $div (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 6080)) + (call $assert_return_nan (call $div (f64.const inf) (f64.const -nan)) (i32.const 6084)) + (call $assert_return_nan (call $div (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 6088)) + (call $assert_return_nan (call $div (f64.const inf) (f64.const nan)) (i32.const 6092)) + (call $assert_return_nan (call $div (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 6096)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x0p+0)) (i32.const 6100)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 6104)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x0p+0)) (i32.const 6108)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 6112)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x0p+0)) (i32.const 6116)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 6120)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x0p+0)) (i32.const 6124)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 6128)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 6132)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 6136)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 6140)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 6144)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 6148)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 6152)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 6156)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 6160)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 6164)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 6168)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 6172)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 6176)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x1p-1022)) (i32.const 6180)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 6184)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x1p-1022)) (i32.const 6188)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 6192)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x1p-1)) (i32.const 6196)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 6200)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x1p-1)) (i32.const 6204)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 6208)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x1p-1)) (i32.const 6212)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 6216)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x1p-1)) (i32.const 6220)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 6224)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x1p+0)) (i32.const 6228)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 6232)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x1p+0)) (i32.const 6236)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 6240)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x1p+0)) (i32.const 6244)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 6248)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x1p+0)) (i32.const 6252)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 6256)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 6260)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 6264)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 6268)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 6272)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 6276)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 6280)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 6284)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 6288)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 6292)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 6296)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 6300)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 6304)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 6308)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 6312)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 6316)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 6320)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -inf)) (i32.const 6324)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 6328)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const inf)) (i32.const 6332)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 6336)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -inf)) (i32.const 6340)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 6344)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const inf)) (i32.const 6348)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 6352)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -nan)) (i32.const 6356)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 6360)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 6364)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 6368)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const nan)) (i32.const 6372)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 6376)) + (call $assert_return_nan (call $div (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 6380)) + (call $assert_return_nan (call $div (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 6384)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -nan)) (i32.const 6388)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 6392)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 6396)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 6400)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const nan)) (i32.const 6404)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 6408)) + (call $assert_return_nan (call $div (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 6412)) + (call $assert_return_nan (call $div (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 6416)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 6420)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 6424)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 6428)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 6432)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6436)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 6440)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6444)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 6448)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6452)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0) (i32.const 6456)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6460)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 6464)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6468)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0) (i32.const 6472)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6476)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 6480)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6484)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0) (i32.const 6488)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6492)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 6496)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6500)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 6504)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6508)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 6512)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6516)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 6520)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6524)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 6528)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const -inf)) (f64.const -inf) (i32.const 6532)) + (call $assert_return (call $min (f64.const -0x0p+0) (f64.const inf)) (f64.const -0x0p+0) (i32.const 6536)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const -inf)) (f64.const -inf) (i32.const 6540)) + (call $assert_return (call $min (f64.const 0x0p+0) (f64.const inf)) (f64.const 0x0p+0) (i32.const 6544)) + (call $assert_return_nan (call $min (f64.const -0x0p+0) (f64.const -nan)) (i32.const 6548)) + (call $assert_return_nan (call $min (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 6552)) + (call $assert_return_nan (call $min (f64.const -0x0p+0) (f64.const nan)) (i32.const 6556)) + (call $assert_return_nan (call $min (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 6560)) + (call $assert_return_nan (call $min (f64.const 0x0p+0) (f64.const -nan)) (i32.const 6564)) + (call $assert_return_nan (call $min (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 6568)) + (call $assert_return_nan (call $min (f64.const 0x0p+0) (f64.const nan)) (i32.const 6572)) + (call $assert_return_nan (call $min (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 6576)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 6580)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 6584)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 6588)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 6592)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6596)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6600)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6604)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 6608)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6612)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6616)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6620)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 6624)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6628)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0.0000000000001p-1022) (i32.const 6632)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6636)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022) (i32.const 6640)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6644)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 6648)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6652)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 6656)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6660)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022) (i32.const 6664)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6668)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022) (i32.const 6672)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6676)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022) (i32.const 6680)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6684)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022) (i32.const 6688)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 6692)) + (call $assert_return (call $min (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -0x0.0000000000001p-1022) (i32.const 6696)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 6700)) + (call $assert_return (call $min (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0.0000000000001p-1022) (i32.const 6704)) + (call $assert_return_nan (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 6708)) + (call $assert_return_nan (call $min (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 6712)) + (call $assert_return_nan (call $min (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 6716)) + (call $assert_return_nan (call $min (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 6720)) + (call $assert_return_nan (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 6724)) + (call $assert_return_nan (call $min (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 6728)) + (call $assert_return_nan (call $min (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 6732)) + (call $assert_return_nan (call $min (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 6736)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022) (i32.const 6740)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022) (i32.const 6744)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 6748)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 6752)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022) (i32.const 6756)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1022) (i32.const 6760)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6764)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 6768)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6772)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6776)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6780)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 6784)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6788)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1022) (i32.const 6792)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6796)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022) (i32.const 6800)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6804)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022) (i32.const 6808)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6812)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022) (i32.const 6816)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6820)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p-1022) (i32.const 6824)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6828)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022) (i32.const 6832)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6836)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022) (i32.const 6840)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6844)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022) (i32.const 6848)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 6852)) + (call $assert_return (call $min (f64.const -0x1p-1022) (f64.const inf)) (f64.const -0x1p-1022) (i32.const 6856)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -inf) (i32.const 6860)) + (call $assert_return (call $min (f64.const 0x1p-1022) (f64.const inf)) (f64.const 0x1p-1022) (i32.const 6864)) + (call $assert_return_nan (call $min (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 6868)) + (call $assert_return_nan (call $min (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 6872)) + (call $assert_return_nan (call $min (f64.const -0x1p-1022) (f64.const nan)) (i32.const 6876)) + (call $assert_return_nan (call $min (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 6880)) + (call $assert_return_nan (call $min (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 6884)) + (call $assert_return_nan (call $min (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 6888)) + (call $assert_return_nan (call $min (f64.const 0x1p-1022) (f64.const nan)) (i32.const 6892)) + (call $assert_return_nan (call $min (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 6896)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1) (i32.const 6900)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1) (i32.const 6904)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 6908)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 6912)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 6916)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 6920)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 6924)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 6928)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1) (i32.const 6932)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1) (i32.const 6936)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 6940)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 6944)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6948)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 6952)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 6956)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 6960)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6964)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1) (i32.const 6968)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 6972)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1) (i32.const 6976)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6980)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p-1) (i32.const 6984)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 6988)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1) (i32.const 6992)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 6996)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p-1) (i32.const 7000)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7004)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1) (i32.const 7008)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const -inf)) (f64.const -inf) (i32.const 7012)) + (call $assert_return (call $min (f64.const -0x1p-1) (f64.const inf)) (f64.const -0x1p-1) (i32.const 7016)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const -inf)) (f64.const -inf) (i32.const 7020)) + (call $assert_return (call $min (f64.const 0x1p-1) (f64.const inf)) (f64.const 0x1p-1) (i32.const 7024)) + (call $assert_return_nan (call $min (f64.const -0x1p-1) (f64.const -nan)) (i32.const 7028)) + (call $assert_return_nan (call $min (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 7032)) + (call $assert_return_nan (call $min (f64.const -0x1p-1) (f64.const nan)) (i32.const 7036)) + (call $assert_return_nan (call $min (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 7040)) + (call $assert_return_nan (call $min (f64.const 0x1p-1) (f64.const -nan)) (i32.const 7044)) + (call $assert_return_nan (call $min (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 7048)) + (call $assert_return_nan (call $min (f64.const 0x1p-1) (f64.const nan)) (i32.const 7052)) + (call $assert_return_nan (call $min (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 7056)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0) (i32.const 7060)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0) (i32.const 7064)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 7068)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 7072)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 7076)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 7080)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 7084)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 7088)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 7092)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0) (i32.const 7096)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 7100)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 7104)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0) (i32.const 7108)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p+0) (i32.const 7112)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 7116)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 7120)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 7124)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 7128)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 7132)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 7136)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7140)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p+0) (i32.const 7144)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7148)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0) (i32.const 7152)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7156)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p+0) (i32.const 7160)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7164)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0) (i32.const 7168)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const -inf)) (f64.const -inf) (i32.const 7172)) + (call $assert_return (call $min (f64.const -0x1p+0) (f64.const inf)) (f64.const -0x1p+0) (i32.const 7176)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const -inf)) (f64.const -inf) (i32.const 7180)) + (call $assert_return (call $min (f64.const 0x1p+0) (f64.const inf)) (f64.const 0x1p+0) (i32.const 7184)) + (call $assert_return_nan (call $min (f64.const -0x1p+0) (f64.const -nan)) (i32.const 7188)) + (call $assert_return_nan (call $min (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 7192)) + (call $assert_return_nan (call $min (f64.const -0x1p+0) (f64.const nan)) (i32.const 7196)) + (call $assert_return_nan (call $min (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 7200)) + (call $assert_return_nan (call $min (f64.const 0x1p+0) (f64.const -nan)) (i32.const 7204)) + (call $assert_return_nan (call $min (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 7208)) + (call $assert_return_nan (call $min (f64.const 0x1p+0) (f64.const nan)) (i32.const 7212)) + (call $assert_return_nan (call $min (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 7216)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7220)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7224)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 7228)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 7232)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7236)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7240)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 7244)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 7248)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7252)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7256)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 7260)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 7264)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7268)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7272)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 7276)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 7280)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7284)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7288)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 7292)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 7296)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7300)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7304)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7308)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 7312)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7316)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7320)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7324)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2) (i32.const 7328)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf) (i32.const 7332)) + (call $assert_return (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7336)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf) (i32.const 7340)) + (call $assert_return (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x1.921fb54442d18p+2) (i32.const 7344)) + (call $assert_return_nan (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 7348)) + (call $assert_return_nan (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 7352)) + (call $assert_return_nan (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 7356)) + (call $assert_return_nan (call $min (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 7360)) + (call $assert_return_nan (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 7364)) + (call $assert_return_nan (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 7368)) + (call $assert_return_nan (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 7372)) + (call $assert_return_nan (call $min (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 7376)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7380)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7384)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 7388)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 7392)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7396)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7400)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 7404)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 7408)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7412)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7416)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 7420)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 7424)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7428)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7432)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 7436)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 7440)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7444)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7448)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 7452)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 7456)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7460)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7464)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7468)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 7472)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7476)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7480)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7484)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 7488)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf) (i32.const 7492)) + (call $assert_return (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7496)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf) (i32.const 7500)) + (call $assert_return (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 7504)) + (call $assert_return_nan (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 7508)) + (call $assert_return_nan (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 7512)) + (call $assert_return_nan (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 7516)) + (call $assert_return_nan (call $min (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 7520)) + (call $assert_return_nan (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 7524)) + (call $assert_return_nan (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 7528)) + (call $assert_return_nan (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 7532)) + (call $assert_return_nan (call $min (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 7536)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 7540)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf) (i32.const 7544)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 7548)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 7552)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 7556)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 7560)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 7564)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 7568)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 7572)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf) (i32.const 7576)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 7580)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 7584)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 7588)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf) (i32.const 7592)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 7596)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 7600)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 7604)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf) (i32.const 7608)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 7612)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 7616)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 7620)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 7624)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 7628)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 7632)) + (call $assert_return (call $min (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 7636)) + (call $assert_return (call $min (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 7640)) + (call $assert_return (call $min (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 7644)) + (call $assert_return (call $min (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 7648)) + (call $assert_return (call $min (f64.const -inf) (f64.const -inf)) (f64.const -inf) (i32.const 7652)) + (call $assert_return (call $min (f64.const -inf) (f64.const inf)) (f64.const -inf) (i32.const 7656)) + (call $assert_return (call $min (f64.const inf) (f64.const -inf)) (f64.const -inf) (i32.const 7660)) + (call $assert_return (call $min (f64.const inf) (f64.const inf)) (f64.const inf) (i32.const 7664)) + (call $assert_return_nan (call $min (f64.const -inf) (f64.const -nan)) (i32.const 7668)) + (call $assert_return_nan (call $min (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 7672)) + (call $assert_return_nan (call $min (f64.const -inf) (f64.const nan)) (i32.const 7676)) + (call $assert_return_nan (call $min (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 7680)) + (call $assert_return_nan (call $min (f64.const inf) (f64.const -nan)) (i32.const 7684)) + (call $assert_return_nan (call $min (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 7688)) + (call $assert_return_nan (call $min (f64.const inf) (f64.const nan)) (i32.const 7692)) + (call $assert_return_nan (call $min (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 7696)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x0p+0)) (i32.const 7700)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 7704)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x0p+0)) (i32.const 7708)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 7712)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x0p+0)) (i32.const 7716)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 7720)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x0p+0)) (i32.const 7724)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 7728)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 7732)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 7736)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 7740)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 7744)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 7748)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 7752)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 7756)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 7760)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 7764)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 7768)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 7772)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 7776)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x1p-1022)) (i32.const 7780)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 7784)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x1p-1022)) (i32.const 7788)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 7792)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x1p-1)) (i32.const 7796)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 7800)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x1p-1)) (i32.const 7804)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 7808)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x1p-1)) (i32.const 7812)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 7816)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x1p-1)) (i32.const 7820)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 7824)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x1p+0)) (i32.const 7828)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 7832)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x1p+0)) (i32.const 7836)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 7840)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x1p+0)) (i32.const 7844)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 7848)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x1p+0)) (i32.const 7852)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 7856)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 7860)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 7864)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 7868)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 7872)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 7876)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 7880)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 7884)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 7888)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 7892)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 7896)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 7900)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 7904)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 7908)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 7912)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 7916)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 7920)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -inf)) (i32.const 7924)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 7928)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const inf)) (i32.const 7932)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 7936)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -inf)) (i32.const 7940)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 7944)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const inf)) (i32.const 7948)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 7952)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -nan)) (i32.const 7956)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 7960)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 7964)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 7968)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const nan)) (i32.const 7972)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 7976)) + (call $assert_return_nan (call $min (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 7980)) + (call $assert_return_nan (call $min (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 7984)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -nan)) (i32.const 7988)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 7992)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 7996)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 8000)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const nan)) (i32.const 8004)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 8008)) + (call $assert_return_nan (call $min (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 8012)) + (call $assert_return_nan (call $min (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 8016)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8020)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8024)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 8028)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8032)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 8036)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8040)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 8044)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8048)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 8052)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8056)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0) (i32.const 8060)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8064)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 8068)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8072)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0) (i32.const 8076)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8080)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0) (i32.const 8084)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8088)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0) (i32.const 8092)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8096)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 8100)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8104)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 8108)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8112)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 8116)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8120)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 8124)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8128)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 8132)) + (call $assert_return (call $max (f64.const -0x0p+0) (f64.const inf)) (f64.const inf) (i32.const 8136)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const -inf)) (f64.const 0x0p+0) (i32.const 8140)) + (call $assert_return (call $max (f64.const 0x0p+0) (f64.const inf)) (f64.const inf) (i32.const 8144)) + (call $assert_return_nan (call $max (f64.const -0x0p+0) (f64.const -nan)) (i32.const 8148)) + (call $assert_return_nan (call $max (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 8152)) + (call $assert_return_nan (call $max (f64.const -0x0p+0) (f64.const nan)) (i32.const 8156)) + (call $assert_return_nan (call $max (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 8160)) + (call $assert_return_nan (call $max (f64.const 0x0p+0) (f64.const -nan)) (i32.const 8164)) + (call $assert_return_nan (call $max (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 8168)) + (call $assert_return_nan (call $max (f64.const 0x0p+0) (f64.const nan)) (i32.const 8172)) + (call $assert_return_nan (call $max (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 8176)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8180)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8184)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 8188)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 8192)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8196)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8200)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8204)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8208)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8212)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8216)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8220)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8224)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022) (i32.const 8228)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8232)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0.0000000000001p-1022) (i32.const 8236)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8240)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 8244)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8248)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 8252)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8256)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022) (i32.const 8260)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8264)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022) (i32.const 8268)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8272)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022) (i32.const 8276)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8280)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022) (i32.const 8284)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8288)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0.0000000000001p-1022) (i32.const 8292)) + (call $assert_return (call $max (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf) (i32.const 8296)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const 0x0.0000000000001p-1022) (i32.const 8300)) + (call $assert_return (call $max (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf) (i32.const 8304)) + (call $assert_return_nan (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 8308)) + (call $assert_return_nan (call $max (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 8312)) + (call $assert_return_nan (call $max (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 8316)) + (call $assert_return_nan (call $max (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 8320)) + (call $assert_return_nan (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 8324)) + (call $assert_return_nan (call $max (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 8328)) + (call $assert_return_nan (call $max (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 8332)) + (call $assert_return_nan (call $max (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 8336)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8340)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8344)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022) (i32.const 8348)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022) (i32.const 8352)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8356)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8360)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1022) (i32.const 8364)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022) (i32.const 8368)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 8372)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8376)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8380)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8384)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022) (i32.const 8388)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8392)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1022) (i32.const 8396)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8400)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022) (i32.const 8404)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8408)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022) (i32.const 8412)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8416)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022) (i32.const 8420)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8424)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p-1022) (i32.const 8428)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8432)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022) (i32.const 8436)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8440)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022) (i32.const 8444)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8448)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -0x1p-1022) (i32.const 8452)) + (call $assert_return (call $max (f64.const -0x1p-1022) (f64.const inf)) (f64.const inf) (i32.const 8456)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const -inf)) (f64.const 0x1p-1022) (i32.const 8460)) + (call $assert_return (call $max (f64.const 0x1p-1022) (f64.const inf)) (f64.const inf) (i32.const 8464)) + (call $assert_return_nan (call $max (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 8468)) + (call $assert_return_nan (call $max (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 8472)) + (call $assert_return_nan (call $max (f64.const -0x1p-1022) (f64.const nan)) (i32.const 8476)) + (call $assert_return_nan (call $max (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 8480)) + (call $assert_return_nan (call $max (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 8484)) + (call $assert_return_nan (call $max (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 8488)) + (call $assert_return_nan (call $max (f64.const 0x1p-1022) (f64.const nan)) (i32.const 8492)) + (call $assert_return_nan (call $max (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 8496)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8500)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8504)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1) (i32.const 8508)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1) (i32.const 8512)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8516)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8520)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 8524)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 8528)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 8532)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8536)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1) (i32.const 8540)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1) (i32.const 8544)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 8548)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8552)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 8556)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8560)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1) (i32.const 8564)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8568)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1) (i32.const 8572)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8576)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1) (i32.const 8580)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8584)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p-1) (i32.const 8588)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8592)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1) (i32.const 8596)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8600)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p-1) (i32.const 8604)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8608)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const -inf)) (f64.const -0x1p-1) (i32.const 8612)) + (call $assert_return (call $max (f64.const -0x1p-1) (f64.const inf)) (f64.const inf) (i32.const 8616)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const -inf)) (f64.const 0x1p-1) (i32.const 8620)) + (call $assert_return (call $max (f64.const 0x1p-1) (f64.const inf)) (f64.const inf) (i32.const 8624)) + (call $assert_return_nan (call $max (f64.const -0x1p-1) (f64.const -nan)) (i32.const 8628)) + (call $assert_return_nan (call $max (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 8632)) + (call $assert_return_nan (call $max (f64.const -0x1p-1) (f64.const nan)) (i32.const 8636)) + (call $assert_return_nan (call $max (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 8640)) + (call $assert_return_nan (call $max (f64.const 0x1p-1) (f64.const -nan)) (i32.const 8644)) + (call $assert_return_nan (call $max (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 8648)) + (call $assert_return_nan (call $max (f64.const 0x1p-1) (f64.const nan)) (i32.const 8652)) + (call $assert_return_nan (call $max (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 8656)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8660)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8664)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0) (i32.const 8668)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0) (i32.const 8672)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8676)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8680)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 8684)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 8688)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 8692)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8696)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0) (i32.const 8700)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 8704)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 8708)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8712)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p+0) (i32.const 8716)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0) (i32.const 8720)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 8724)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8728)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 8732)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8736)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0) (i32.const 8740)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8744)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p+0) (i32.const 8748)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8752)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0) (i32.const 8756)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8760)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p+0) (i32.const 8764)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8768)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const -inf)) (f64.const -0x1p+0) (i32.const 8772)) + (call $assert_return (call $max (f64.const -0x1p+0) (f64.const inf)) (f64.const inf) (i32.const 8776)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const -inf)) (f64.const 0x1p+0) (i32.const 8780)) + (call $assert_return (call $max (f64.const 0x1p+0) (f64.const inf)) (f64.const inf) (i32.const 8784)) + (call $assert_return_nan (call $max (f64.const -0x1p+0) (f64.const -nan)) (i32.const 8788)) + (call $assert_return_nan (call $max (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 8792)) + (call $assert_return_nan (call $max (f64.const -0x1p+0) (f64.const nan)) (i32.const 8796)) + (call $assert_return_nan (call $max (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 8800)) + (call $assert_return_nan (call $max (f64.const 0x1p+0) (f64.const -nan)) (i32.const 8804)) + (call $assert_return_nan (call $max (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 8808)) + (call $assert_return_nan (call $max (f64.const 0x1p+0) (f64.const nan)) (i32.const 8812)) + (call $assert_return_nan (call $max (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 8816)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8820)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8824)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8828)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8832)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8836)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 8840)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8844)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8848)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 8852)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 8856)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8860)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8864)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 8868)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 8872)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8876)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8880)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 8884)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 8888)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8892)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8896)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 8900)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8904)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8908)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8912)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2) (i32.const 8916)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8920)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8924)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8928)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x1.921fb54442d18p+2) (i32.const 8932)) + (call $assert_return (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf) (i32.const 8936)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const 0x1.921fb54442d18p+2) (i32.const 8940)) + (call $assert_return (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf) (i32.const 8944)) + (call $assert_return_nan (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 8948)) + (call $assert_return_nan (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 8952)) + (call $assert_return_nan (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 8956)) + (call $assert_return_nan (call $max (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 8960)) + (call $assert_return_nan (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 8964)) + (call $assert_return_nan (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 8968)) + (call $assert_return_nan (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 8972)) + (call $assert_return_nan (call $max (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 8976)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 8980)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 8984)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8988)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 8992)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 8996)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 9000)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9004)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9008)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 9012)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 9016)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9020)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9024)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 9028)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 9032)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9036)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9040)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 9044)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9048)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9052)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9056)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 9060)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 9064)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9068)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9072)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9076)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9080)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9084)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9088)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9092)) + (call $assert_return (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf) (i32.const 9096)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9100)) + (call $assert_return (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf) (i32.const 9104)) + (call $assert_return_nan (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 9108)) + (call $assert_return_nan (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 9112)) + (call $assert_return_nan (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 9116)) + (call $assert_return_nan (call $max (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 9120)) + (call $assert_return_nan (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 9124)) + (call $assert_return_nan (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 9128)) + (call $assert_return_nan (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 9132)) + (call $assert_return_nan (call $max (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 9136)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 9140)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 9144)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x0p+0)) (f64.const inf) (i32.const 9148)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x0p+0)) (f64.const inf) (i32.const 9152)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 9156)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 9160)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf) (i32.const 9164)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 9168)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 9172)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 9176)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x1p-1022)) (f64.const inf) (i32.const 9180)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 9184)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 9188)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 9192)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x1p-1)) (f64.const inf) (i32.const 9196)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 9200)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 9204)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9208)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x1p+0)) (f64.const inf) (i32.const 9212)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 9216)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 9220)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 9224)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 9228)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 9232)) + (call $assert_return (call $max (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9236)) + (call $assert_return (call $max (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9240)) + (call $assert_return (call $max (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 9244)) + (call $assert_return (call $max (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 9248)) + (call $assert_return (call $max (f64.const -inf) (f64.const -inf)) (f64.const -inf) (i32.const 9252)) + (call $assert_return (call $max (f64.const -inf) (f64.const inf)) (f64.const inf) (i32.const 9256)) + (call $assert_return (call $max (f64.const inf) (f64.const -inf)) (f64.const inf) (i32.const 9260)) + (call $assert_return (call $max (f64.const inf) (f64.const inf)) (f64.const inf) (i32.const 9264)) + (call $assert_return_nan (call $max (f64.const -inf) (f64.const -nan)) (i32.const 9268)) + (call $assert_return_nan (call $max (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 9272)) + (call $assert_return_nan (call $max (f64.const -inf) (f64.const nan)) (i32.const 9276)) + (call $assert_return_nan (call $max (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 9280)) + (call $assert_return_nan (call $max (f64.const inf) (f64.const -nan)) (i32.const 9284)) + (call $assert_return_nan (call $max (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 9288)) + (call $assert_return_nan (call $max (f64.const inf) (f64.const nan)) (i32.const 9292)) + (call $assert_return_nan (call $max (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 9296)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x0p+0)) (i32.const 9300)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 9304)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x0p+0)) (i32.const 9308)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 9312)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x0p+0)) (i32.const 9316)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 9320)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x0p+0)) (i32.const 9324)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 9328)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 9332)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 9336)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 9340)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 9344)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 9348)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 9352)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 9356)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 9360)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 9364)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 9368)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 9372)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 9376)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x1p-1022)) (i32.const 9380)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 9384)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x1p-1022)) (i32.const 9388)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 9392)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x1p-1)) (i32.const 9396)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 9400)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x1p-1)) (i32.const 9404)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 9408)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x1p-1)) (i32.const 9412)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 9416)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x1p-1)) (i32.const 9420)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 9424)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x1p+0)) (i32.const 9428)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 9432)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x1p+0)) (i32.const 9436)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 9440)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x1p+0)) (i32.const 9444)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 9448)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x1p+0)) (i32.const 9452)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 9456)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 9460)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 9464)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 9468)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 9472)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 9476)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 9480)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 9484)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 9488)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 9492)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 9496)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 9500)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 9504)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 9508)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 9512)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 9516)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 9520)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -inf)) (i32.const 9524)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 9528)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const inf)) (i32.const 9532)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 9536)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -inf)) (i32.const 9540)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 9544)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const inf)) (i32.const 9548)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 9552)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -nan)) (i32.const 9556)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 9560)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 9564)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 9568)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const nan)) (i32.const 9572)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 9576)) + (call $assert_return_nan (call $max (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 9580)) + (call $assert_return_nan (call $max (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 9584)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -nan)) (i32.const 9588)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 9592)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 9596)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 9600)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const nan)) (i32.const 9604)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 9608)) + (call $assert_return_nan (call $max (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 9612)) + (call $assert_return_nan (call $max (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 9616)) + (call $assert_return (call $sqrt (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 9620)) + (call $assert_return (call $sqrt (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 9624)) + (call $assert_return_nan (call $sqrt (f64.const -0x0.0000000000001p-1022)) (i32.const 9628)) + (call $assert_return (call $sqrt (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-537) (i32.const 9632)) + (call $assert_return_nan (call $sqrt (f64.const -0x1p-1022)) (i32.const 9636)) + (call $assert_return (call $sqrt (f64.const 0x1p-1022)) (f64.const 0x1p-511) (i32.const 9640)) + (call $assert_return_nan (call $sqrt (f64.const -0x1p-1)) (i32.const 9644)) + (call $assert_return (call $sqrt (f64.const 0x1p-1)) (f64.const 0x1.6a09e667f3bcdp-1) (i32.const 9648)) + (call $assert_return_nan (call $sqrt (f64.const -0x1p+0)) (i32.const 9652)) + (call $assert_return (call $sqrt (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9656)) + (call $assert_return_nan (call $sqrt (f64.const -0x1.921fb54442d18p+2)) (i32.const 9660)) + (call $assert_return (call $sqrt (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.40d931ff62705p+1) (i32.const 9664)) + (call $assert_return_nan (call $sqrt (f64.const -0x1.fffffffffffffp+1023)) (i32.const 9668)) + (call $assert_return (call $sqrt (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+511) (i32.const 9672)) + (call $assert_return_nan (call $sqrt (f64.const -inf)) (i32.const 9676)) + (call $assert_return (call $sqrt (f64.const inf)) (f64.const inf) (i32.const 9680)) + (call $assert_return_nan (call $sqrt (f64.const -nan)) (i32.const 9684)) + (call $assert_return_nan (call $sqrt (f64.const -nan:0x4000000000000)) (i32.const 9688)) + (call $assert_return_nan (call $sqrt (f64.const nan)) (i32.const 9692)) + (call $assert_return_nan (call $sqrt (f64.const nan:0x4000000000000)) (i32.const 9696)) + (call $assert_return (call $floor (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 9700)) + (call $assert_return (call $floor (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 9704)) + (call $assert_return (call $floor (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 9708)) + (call $assert_return (call $floor (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 9712)) + (call $assert_return (call $floor (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 9716)) + (call $assert_return (call $floor (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 9720)) + (call $assert_return (call $floor (f64.const -0x1p-1)) (f64.const -0x1p+0) (i32.const 9724)) + (call $assert_return (call $floor (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 9728)) + (call $assert_return (call $floor (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 9732)) + (call $assert_return (call $floor (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9736)) + (call $assert_return (call $floor (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.cp+2) (i32.const 9740)) + (call $assert_return (call $floor (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2) (i32.const 9744)) + (call $assert_return (call $floor (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9748)) + (call $assert_return (call $floor (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9752)) + (call $assert_return (call $floor (f64.const -inf)) (f64.const -inf) (i32.const 9756)) + (call $assert_return (call $floor (f64.const inf)) (f64.const inf) (i32.const 9760)) + (call $assert_return_nan (call $floor (f64.const -nan)) (i32.const 9764)) + (call $assert_return_nan (call $floor (f64.const -nan:0x4000000000000)) (i32.const 9768)) + (call $assert_return_nan (call $floor (f64.const nan)) (i32.const 9772)) + (call $assert_return_nan (call $floor (f64.const nan:0x4000000000000)) (i32.const 9776)) + (call $assert_return (call $ceil (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 9780)) + (call $assert_return (call $ceil (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 9784)) + (call $assert_return (call $ceil (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 9788)) + (call $assert_return (call $ceil (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 9792)) + (call $assert_return (call $ceil (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 9796)) + (call $assert_return (call $ceil (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 9800)) + (call $assert_return (call $ceil (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 9804)) + (call $assert_return (call $ceil (f64.const 0x1p-1)) (f64.const 0x1p+0) (i32.const 9808)) + (call $assert_return (call $ceil (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 9812)) + (call $assert_return (call $ceil (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9816)) + (call $assert_return (call $ceil (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2) (i32.const 9820)) + (call $assert_return (call $ceil (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.cp+2) (i32.const 9824)) + (call $assert_return (call $ceil (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9828)) + (call $assert_return (call $ceil (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9832)) + (call $assert_return (call $ceil (f64.const -inf)) (f64.const -inf) (i32.const 9836)) + (call $assert_return (call $ceil (f64.const inf)) (f64.const inf) (i32.const 9840)) + (call $assert_return_nan (call $ceil (f64.const -nan)) (i32.const 9844)) + (call $assert_return_nan (call $ceil (f64.const -nan:0x4000000000000)) (i32.const 9848)) + (call $assert_return_nan (call $ceil (f64.const nan)) (i32.const 9852)) + (call $assert_return_nan (call $ceil (f64.const nan:0x4000000000000)) (i32.const 9856)) + (call $assert_return (call $trunc (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 9860)) + (call $assert_return (call $trunc (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 9864)) + (call $assert_return (call $trunc (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 9868)) + (call $assert_return (call $trunc (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 9872)) + (call $assert_return (call $trunc (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 9876)) + (call $assert_return (call $trunc (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 9880)) + (call $assert_return (call $trunc (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 9884)) + (call $assert_return (call $trunc (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 9888)) + (call $assert_return (call $trunc (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 9892)) + (call $assert_return (call $trunc (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9896)) + (call $assert_return (call $trunc (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2) (i32.const 9900)) + (call $assert_return (call $trunc (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2) (i32.const 9904)) + (call $assert_return (call $trunc (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9908)) + (call $assert_return (call $trunc (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9912)) + (call $assert_return (call $trunc (f64.const -inf)) (f64.const -inf) (i32.const 9916)) + (call $assert_return (call $trunc (f64.const inf)) (f64.const inf) (i32.const 9920)) + (call $assert_return_nan (call $trunc (f64.const -nan)) (i32.const 9924)) + (call $assert_return_nan (call $trunc (f64.const -nan:0x4000000000000)) (i32.const 9928)) + (call $assert_return_nan (call $trunc (f64.const nan)) (i32.const 9932)) + (call $assert_return_nan (call $trunc (f64.const nan:0x4000000000000)) (i32.const 9936)) + (call $assert_return (call $nearest (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 9940)) + (call $assert_return (call $nearest (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 9944)) + (call $assert_return (call $nearest (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 9948)) + (call $assert_return (call $nearest (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 9952)) + (call $assert_return (call $nearest (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 9956)) + (call $assert_return (call $nearest (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 9960)) + (call $assert_return (call $nearest (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 9964)) + (call $assert_return (call $nearest (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 9968)) + (call $assert_return (call $nearest (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 9972)) + (call $assert_return (call $nearest (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 9976)) + (call $assert_return (call $nearest (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2) (i32.const 9980)) + (call $assert_return (call $nearest (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2) (i32.const 9984)) + (call $assert_return (call $nearest (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 9988)) + (call $assert_return (call $nearest (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 9992)) + (call $assert_return (call $nearest (f64.const -inf)) (f64.const -inf) (i32.const 9996)) + (call $assert_return (call $nearest (f64.const inf)) (f64.const inf) (i32.const 10000)) + (call $assert_return_nan (call $nearest (f64.const -nan)) (i32.const 10004)) + (call $assert_return_nan (call $nearest (f64.const -nan:0x4000000000000)) (i32.const 10008)) + (call $assert_return_nan (call $nearest (f64.const nan)) (i32.const 10012)) + (call $assert_return_nan (call $nearest (f64.const nan:0x4000000000000)) (i32.const 10016)) +)) +)====="; +static const char f64_bitwise_test_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (data (i32.const 292) "69") + (data (i32.const 296) "70") + (data (i32.const 300) "71") + (data (i32.const 304) "72") + (data (i32.const 308) "73") + (data (i32.const 312) "74") + (data (i32.const 316) "75") + (data (i32.const 320) "76") + (data (i32.const 324) "77") + (data (i32.const 328) "78") + (data (i32.const 332) "79") + (data (i32.const 336) "80") + (data (i32.const 340) "81") + (data (i32.const 344) "82") + (data (i32.const 348) "83") + (data (i32.const 352) "84") + (data (i32.const 356) "85") + (data (i32.const 360) "86") + (data (i32.const 364) "87") + (data (i32.const 368) "88") + (data (i32.const 372) "89") + (data (i32.const 376) "90") + (data (i32.const 380) "91") + (data (i32.const 384) "92") + (data (i32.const 388) "93") + (data (i32.const 392) "94") + (data (i32.const 396) "95") + (data (i32.const 400) "96") + (data (i32.const 404) "97") + (data (i32.const 408) "98") + (data (i32.const 412) "99") + (data (i32.const 416) "100") + (data (i32.const 420) "101") + (data (i32.const 424) "102") + (data (i32.const 428) "103") + (data (i32.const 432) "104") + (data (i32.const 436) "105") + (data (i32.const 440) "106") + (data (i32.const 444) "107") + (data (i32.const 448) "108") + (data (i32.const 452) "109") + (data (i32.const 456) "110") + (data (i32.const 460) "111") + (data (i32.const 464) "112") + (data (i32.const 468) "113") + (data (i32.const 472) "114") + (data (i32.const 476) "115") + (data (i32.const 480) "116") + (data (i32.const 484) "117") + (data (i32.const 488) "118") + (data (i32.const 492) "119") + (data (i32.const 496) "120") + (data (i32.const 500) "121") + (data (i32.const 504) "122") + (data (i32.const 508) "123") + (data (i32.const 512) "124") + (data (i32.const 516) "125") + (data (i32.const 520) "126") + (data (i32.const 524) "127") + (data (i32.const 528) "128") + (data (i32.const 532) "129") + (data (i32.const 536) "130") + (data (i32.const 540) "131") + (data (i32.const 544) "132") + (data (i32.const 548) "133") + (data (i32.const 552) "134") + (data (i32.const 556) "135") + (data (i32.const 560) "136") + (data (i32.const 564) "137") + (data (i32.const 568) "138") + (data (i32.const 572) "139") + (data (i32.const 576) "140") + (data (i32.const 580) "141") + (data (i32.const 584) "142") + (data (i32.const 588) "143") + (data (i32.const 592) "144") + (data (i32.const 596) "145") + (data (i32.const 600) "146") + (data (i32.const 604) "147") + (data (i32.const 608) "148") + (data (i32.const 612) "149") + (data (i32.const 616) "150") + (data (i32.const 620) "151") + (data (i32.const 624) "152") + (data (i32.const 628) "153") + (data (i32.const 632) "154") + (data (i32.const 636) "155") + (data (i32.const 640) "156") + (data (i32.const 644) "157") + (data (i32.const 648) "158") + (data (i32.const 652) "159") + (data (i32.const 656) "160") + (data (i32.const 660) "161") + (data (i32.const 664) "162") + (data (i32.const 668) "163") + (data (i32.const 672) "164") + (data (i32.const 676) "165") + (data (i32.const 680) "166") + (data (i32.const 684) "167") + (data (i32.const 688) "168") + (data (i32.const 692) "169") + (data (i32.const 696) "170") + (data (i32.const 700) "171") + (data (i32.const 704) "172") + (data (i32.const 708) "173") + (data (i32.const 712) "174") + (data (i32.const 716) "175") + (data (i32.const 720) "176") + (data (i32.const 724) "177") + (data (i32.const 728) "178") + (data (i32.const 732) "179") + (data (i32.const 736) "180") + (data (i32.const 740) "181") + (data (i32.const 744) "182") + (data (i32.const 748) "183") + (data (i32.const 752) "184") + (data (i32.const 756) "185") + (data (i32.const 760) "186") + (data (i32.const 764) "187") + (data (i32.const 768) "188") + (data (i32.const 772) "189") + (data (i32.const 776) "190") + (data (i32.const 780) "191") + (data (i32.const 784) "192") + (data (i32.const 788) "193") + (data (i32.const 792) "194") + (data (i32.const 796) "195") + (data (i32.const 800) "196") + (data (i32.const 804) "197") + (data (i32.const 808) "198") + (data (i32.const 812) "199") + (data (i32.const 816) "200") + (data (i32.const 820) "201") + (data (i32.const 824) "202") + (data (i32.const 828) "203") + (data (i32.const 832) "204") + (data (i32.const 836) "205") + (data (i32.const 840) "206") + (data (i32.const 844) "207") + (data (i32.const 848) "208") + (data (i32.const 852) "209") + (data (i32.const 856) "210") + (data (i32.const 860) "211") + (data (i32.const 864) "212") + (data (i32.const 868) "213") + (data (i32.const 872) "214") + (data (i32.const 876) "215") + (data (i32.const 880) "216") + (data (i32.const 884) "217") + (data (i32.const 888) "218") + (data (i32.const 892) "219") + (data (i32.const 896) "220") + (data (i32.const 900) "221") + (data (i32.const 904) "222") + (data (i32.const 908) "223") + (data (i32.const 912) "224") + (data (i32.const 916) "225") + (data (i32.const 920) "226") + (data (i32.const 924) "227") + (data (i32.const 928) "228") + (data (i32.const 932) "229") + (data (i32.const 936) "230") + (data (i32.const 940) "231") + (data (i32.const 944) "232") + (data (i32.const 948) "233") + (data (i32.const 952) "234") + (data (i32.const 956) "235") + (data (i32.const 960) "236") + (data (i32.const 964) "237") + (data (i32.const 968) "238") + (data (i32.const 972) "239") + (data (i32.const 976) "240") + (data (i32.const 980) "241") + (data (i32.const 984) "242") + (data (i32.const 988) "243") + (data (i32.const 992) "244") + (data (i32.const 996) "245") + (data (i32.const 1000) "246") + (data (i32.const 1004) "247") + (data (i32.const 1008) "248") + (data (i32.const 1012) "249") + (data (i32.const 1016) "250") + (data (i32.const 1020) "251") + (data (i32.const 1024) "252") + (data (i32.const 1028) "253") + (data (i32.const 1032) "254") + (data (i32.const 1036) "255") + (data (i32.const 1040) "256") + (data (i32.const 1044) "257") + (data (i32.const 1048) "258") + (data (i32.const 1052) "259") + (data (i32.const 1056) "260") + (data (i32.const 1060) "261") + (data (i32.const 1064) "262") + (data (i32.const 1068) "263") + (data (i32.const 1072) "264") + (data (i32.const 1076) "265") + (data (i32.const 1080) "266") + (data (i32.const 1084) "267") + (data (i32.const 1088) "268") + (data (i32.const 1092) "269") + (data (i32.const 1096) "270") + (data (i32.const 1100) "271") + (data (i32.const 1104) "272") + (data (i32.const 1108) "273") + (data (i32.const 1112) "274") + (data (i32.const 1116) "275") + (data (i32.const 1120) "276") + (data (i32.const 1124) "277") + (data (i32.const 1128) "278") + (data (i32.const 1132) "279") + (data (i32.const 1136) "280") + (data (i32.const 1140) "281") + (data (i32.const 1144) "282") + (data (i32.const 1148) "283") + (data (i32.const 1152) "284") + (data (i32.const 1156) "285") + (data (i32.const 1160) "286") + (data (i32.const 1164) "287") + (data (i32.const 1168) "288") + (data (i32.const 1172) "289") + (data (i32.const 1176) "290") + (data (i32.const 1180) "291") + (data (i32.const 1184) "292") + (data (i32.const 1188) "293") + (data (i32.const 1192) "294") + (data (i32.const 1196) "295") + (data (i32.const 1200) "296") + (data (i32.const 1204) "297") + (data (i32.const 1208) "298") + (data (i32.const 1212) "299") + (data (i32.const 1216) "300") + (data (i32.const 1220) "301") + (data (i32.const 1224) "302") + (data (i32.const 1228) "303") + (data (i32.const 1232) "304") + (data (i32.const 1236) "305") + (data (i32.const 1240) "306") + (data (i32.const 1244) "307") + (data (i32.const 1248) "308") + (data (i32.const 1252) "309") + (data (i32.const 1256) "310") + (data (i32.const 1260) "311") + (data (i32.const 1264) "312") + (data (i32.const 1268) "313") + (data (i32.const 1272) "314") + (data (i32.const 1276) "315") + (data (i32.const 1280) "316") + (data (i32.const 1284) "317") + (data (i32.const 1288) "318") + (data (i32.const 1292) "319") + (data (i32.const 1296) "320") + (data (i32.const 1300) "321") + (data (i32.const 1304) "322") + (data (i32.const 1308) "323") + (data (i32.const 1312) "324") + (data (i32.const 1316) "325") + (data (i32.const 1320) "326") + (data (i32.const 1324) "327") + (data (i32.const 1328) "328") + (data (i32.const 1332) "329") + (data (i32.const 1336) "330") + (data (i32.const 1340) "331") + (data (i32.const 1344) "332") + (data (i32.const 1348) "333") + (data (i32.const 1352) "334") + (data (i32.const 1356) "335") + (data (i32.const 1360) "336") + (data (i32.const 1364) "337") + (data (i32.const 1368) "338") + (data (i32.const 1372) "339") + (data (i32.const 1376) "340") + (data (i32.const 1380) "341") + (data (i32.const 1384) "342") + (data (i32.const 1388) "343") + (data (i32.const 1392) "344") + (data (i32.const 1396) "345") + (data (i32.const 1400) "346") + (data (i32.const 1404) "347") + (data (i32.const 1408) "348") + (data (i32.const 1412) "349") + (data (i32.const 1416) "350") + (data (i32.const 1420) "351") + (data (i32.const 1424) "352") + (data (i32.const 1428) "353") + (data (i32.const 1432) "354") + (data (i32.const 1436) "355") + (data (i32.const 1440) "356") + (data (i32.const 1444) "357") + (data (i32.const 1448) "358") + (data (i32.const 1452) "359") + (data (i32.const 1456) "360") + (export "abs" (func $abs)) + (export "neg" (func $neg)) + (export "copysign" (func $copysign)) + (export "apply" (func $apply)) + (export "assert_return" (func $assert_return)) + (func $assert_return (param $0 f64) (param $1 f64 ) (param $2 i32) (call $eosio_assert(i64.eq (i64.reinterpret/f64 (get_local $0)) (i64.reinterpret/f64 (get_local $1))) (get_local $2))) + (func $abs (param $0 f64) (result f64) (f64.abs (get_local $0))) + (func $neg (param $0 f64) (result f64) (f64.neg (get_local $0))) + (func $copysign (param $0 f64) (param $1 f64) (result f64) (f64.copysign (get_local $0) (get_local $1))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 20)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 24)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0) (i32.const 28)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 32)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 36)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 40)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0) (i32.const 44)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0) (i32.const 48)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 52)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 56)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0) (i32.const 60)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0) (i32.const 64)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 68)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 72)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0) (i32.const 76)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0) (i32.const 80)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0) (i32.const 84)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 88)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0) (i32.const 92)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0) (i32.const 96)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 100)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 104)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0) (i32.const 108)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0) (i32.const 112)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 116)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 120)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0) (i32.const 124)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0) (i32.const 128)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 132)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const inf)) (f64.const 0x0p+0) (i32.const 136)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -inf)) (f64.const -0x0p+0) (i32.const 140)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const inf)) (f64.const 0x0p+0) (i32.const 144)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const -nan)) (f64.const -0x0p+0) (i32.const 148)) + (call $assert_return (call $copysign (f64.const -0x0p+0) (f64.const nan)) (f64.const 0x0p+0) (i32.const 152)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const -nan)) (f64.const -0x0p+0) (i32.const 156)) + (call $assert_return (call $copysign (f64.const 0x0p+0) (f64.const nan)) (f64.const 0x0p+0) (i32.const 160)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 164)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 168)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 172)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 176)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 180)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 184)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 188)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 192)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 196)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 200)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 204)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 208)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022) (i32.const 212)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022) (i32.const 216)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022) (i32.const 220)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022) (i32.const 224)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 228)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 232)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022) (i32.const 236)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022) (i32.const 240)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022) (i32.const 244)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022) (i32.const 248)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022) (i32.const 252)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022) (i32.const 256)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022) (i32.const 260)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022) (i32.const 264)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022) (i32.const 268)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022) (i32.const 272)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0.0000000000001p-1022) (i32.const 276)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0.0000000000001p-1022) (i32.const 280)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0.0000000000001p-1022) (i32.const 284)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0.0000000000001p-1022) (i32.const 288)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -0x0.0000000000001p-1022) (i32.const 292)) + (call $assert_return (call $copysign (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const 0x0.0000000000001p-1022) (i32.const 296)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -0x0.0000000000001p-1022) (i32.const 300)) + (call $assert_return (call $copysign (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const 0x0.0000000000001p-1022) (i32.const 304)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022) (i32.const 308)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022) (i32.const 312)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022) (i32.const 316)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022) (i32.const 320)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022) (i32.const 324)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022) (i32.const 328)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022) (i32.const 332)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022) (i32.const 336)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 340)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 344)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022) (i32.const 348)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 352)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022) (i32.const 356)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022) (i32.const 360)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022) (i32.const 364)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022) (i32.const 368)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022) (i32.const 372)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022) (i32.const 376)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022) (i32.const 380)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022) (i32.const 384)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022) (i32.const 388)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022) (i32.const 392)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022) (i32.const 396)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022) (i32.const 400)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022) (i32.const 404)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022) (i32.const 408)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022) (i32.const 412)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022) (i32.const 416)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -0x1p-1022) (i32.const 420)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const inf)) (f64.const 0x1p-1022) (i32.const 424)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -0x1p-1022) (i32.const 428)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const inf)) (f64.const 0x1p-1022) (i32.const 432)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -0x1p-1022) (i32.const 436)) + (call $assert_return (call $copysign (f64.const -0x1p-1022) (f64.const nan)) (f64.const 0x1p-1022) (i32.const 440)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -0x1p-1022) (i32.const 444)) + (call $assert_return (call $copysign (f64.const 0x1p-1022) (f64.const nan)) (f64.const 0x1p-1022) (i32.const 448)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1) (i32.const 452)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1) (i32.const 456)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1) (i32.const 460)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1) (i32.const 464)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 468)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 472)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1) (i32.const 476)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1) (i32.const 480)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1) (i32.const 484)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1) (i32.const 488)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1) (i32.const 492)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1) (i32.const 496)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 500)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 504)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1) (i32.const 508)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 512)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1) (i32.const 516)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1) (i32.const 520)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1) (i32.const 524)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1) (i32.const 528)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1) (i32.const 532)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1) (i32.const 536)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1) (i32.const 540)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1) (i32.const 544)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1) (i32.const 548)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1) (i32.const 552)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1) (i32.const 556)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1) (i32.const 560)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -inf)) (f64.const -0x1p-1) (i32.const 564)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const inf)) (f64.const 0x1p-1) (i32.const 568)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -inf)) (f64.const -0x1p-1) (i32.const 572)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const inf)) (f64.const 0x1p-1) (i32.const 576)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const -nan)) (f64.const -0x1p-1) (i32.const 580)) + (call $assert_return (call $copysign (f64.const -0x1p-1) (f64.const nan)) (f64.const 0x1p-1) (i32.const 584)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const -nan)) (f64.const -0x1p-1) (i32.const 588)) + (call $assert_return (call $copysign (f64.const 0x1p-1) (f64.const nan)) (f64.const 0x1p-1) (i32.const 592)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0) (i32.const 596)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0) (i32.const 600)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0) (i32.const 604)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0) (i32.const 608)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 612)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 616)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0) (i32.const 620)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0) (i32.const 624)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 628)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 632)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0) (i32.const 636)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0) (i32.const 640)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0) (i32.const 644)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0) (i32.const 648)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0) (i32.const 652)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0) (i32.const 656)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 660)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 664)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0) (i32.const 668)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 672)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0) (i32.const 676)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0) (i32.const 680)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0) (i32.const 684)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0) (i32.const 688)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0) (i32.const 692)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0) (i32.const 696)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0) (i32.const 700)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0) (i32.const 704)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -inf)) (f64.const -0x1p+0) (i32.const 708)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const inf)) (f64.const 0x1p+0) (i32.const 712)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -inf)) (f64.const -0x1p+0) (i32.const 716)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const inf)) (f64.const 0x1p+0) (i32.const 720)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const -nan)) (f64.const -0x1p+0) (i32.const 724)) + (call $assert_return (call $copysign (f64.const -0x1p+0) (f64.const nan)) (f64.const 0x1p+0) (i32.const 728)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const -nan)) (f64.const -0x1p+0) (i32.const 732)) + (call $assert_return (call $copysign (f64.const 0x1p+0) (f64.const nan)) (f64.const 0x1p+0) (i32.const 736)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 740)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 744)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 748)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 752)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 756)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 760)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 764)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 768)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 772)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 776)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2) (i32.const 780)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2) (i32.const 784)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2) (i32.const 788)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2) (i32.const 792)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2) (i32.const 796)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2) (i32.const 800)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 804)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 808)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2) (i32.const 812)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2) (i32.const 816)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 820)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 824)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 828)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 832)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2) (i32.const 836)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2) (i32.const 840)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2) (i32.const 844)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2) (i32.const 848)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x1.921fb54442d18p+2) (i32.const 852)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x1.921fb54442d18p+2) (i32.const 856)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x1.921fb54442d18p+2) (i32.const 860)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x1.921fb54442d18p+2) (i32.const 864)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -0x1.921fb54442d18p+2) (i32.const 868)) + (call $assert_return (call $copysign (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const 0x1.921fb54442d18p+2) (i32.const 872)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -0x1.921fb54442d18p+2) (i32.const 876)) + (call $assert_return (call $copysign (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const 0x1.921fb54442d18p+2) (i32.const 880)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 884)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 888)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 892)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 896)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 900)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 904)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 908)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 912)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 916)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 920)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 924)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 928)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 932)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 936)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 940)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 944)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 948)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 952)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 956)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 960)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 964)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 968)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 972)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 976)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 980)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 984)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 988)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 992)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 996)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1000)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1004)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1008)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1012)) + (call $assert_return (call $copysign (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1016)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1020)) + (call $assert_return (call $copysign (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1024)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 1028)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x0p+0)) (f64.const inf) (i32.const 1032)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x0p+0)) (f64.const -inf) (i32.const 1036)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x0p+0)) (f64.const inf) (i32.const 1040)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 1044)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 1048)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf) (i32.const 1052)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf) (i32.const 1056)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 1060)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 1064)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x1p-1022)) (f64.const -inf) (i32.const 1068)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf) (i32.const 1072)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 1076)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 1080)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x1p-1)) (f64.const -inf) (i32.const 1084)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x1p-1)) (f64.const inf) (i32.const 1088)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 1092)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 1096)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x1p+0)) (f64.const -inf) (i32.const 1100)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x1p+0)) (f64.const inf) (i32.const 1104)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 1108)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 1112)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf) (i32.const 1116)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf) (i32.const 1120)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 1124)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 1128)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf) (i32.const 1132)) + (call $assert_return (call $copysign (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf) (i32.const 1136)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -inf)) (f64.const -inf) (i32.const 1140)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const inf)) (f64.const inf) (i32.const 1144)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -inf)) (f64.const -inf) (i32.const 1148)) + (call $assert_return (call $copysign (f64.const inf) (f64.const inf)) (f64.const inf) (i32.const 1152)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const -nan)) (f64.const -inf) (i32.const 1156)) + (call $assert_return (call $copysign (f64.const -inf) (f64.const nan)) (f64.const inf) (i32.const 1160)) + (call $assert_return (call $copysign (f64.const inf) (f64.const -nan)) (f64.const -inf) (i32.const 1164)) + (call $assert_return (call $copysign (f64.const inf) (f64.const nan)) (f64.const inf) (i32.const 1168)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan) (i32.const 1172)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x0p+0)) (f64.const nan) (i32.const 1176)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x0p+0)) (f64.const -nan) (i32.const 1180)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x0p+0)) (f64.const nan) (i32.const 1184)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan) (i32.const 1188)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan) (i32.const 1192)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan) (i32.const 1196)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan) (i32.const 1200)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan) (i32.const 1204)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x1p-1022)) (f64.const nan) (i32.const 1208)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x1p-1022)) (f64.const -nan) (i32.const 1212)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan) (i32.const 1216)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan) (i32.const 1220)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x1p-1)) (f64.const nan) (i32.const 1224)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x1p-1)) (f64.const -nan) (i32.const 1228)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x1p-1)) (f64.const nan) (i32.const 1232)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan) (i32.const 1236)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x1p+0)) (f64.const nan) (i32.const 1240)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x1p+0)) (f64.const -nan) (i32.const 1244)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x1p+0)) (f64.const nan) (i32.const 1248)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan) (i32.const 1252)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan) (i32.const 1256)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan) (i32.const 1260)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan) (i32.const 1264)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan) (i32.const 1268)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan) (i32.const 1272)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan) (i32.const 1276)) + (call $assert_return (call $copysign (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan) (i32.const 1280)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -inf)) (f64.const -nan) (i32.const 1284)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const inf)) (f64.const nan) (i32.const 1288)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -inf)) (f64.const -nan) (i32.const 1292)) + (call $assert_return (call $copysign (f64.const nan) (f64.const inf)) (f64.const nan) (i32.const 1296)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const -nan)) (f64.const -nan) (i32.const 1300)) + (call $assert_return (call $copysign (f64.const -nan) (f64.const nan)) (f64.const nan) (i32.const 1304)) + (call $assert_return (call $copysign (f64.const nan) (f64.const -nan)) (f64.const -nan) (i32.const 1308)) + (call $assert_return (call $copysign (f64.const nan) (f64.const nan)) (f64.const nan) (i32.const 1312)) + (call $assert_return (call $abs (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 1316)) + (call $assert_return (call $abs (f64.const 0x0p+0)) (f64.const 0x0p+0) (i32.const 1320)) + (call $assert_return (call $abs (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 1324)) + (call $assert_return (call $abs (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 1328)) + (call $assert_return (call $abs (f64.const -0x1p-1022)) (f64.const 0x1p-1022) (i32.const 1332)) + (call $assert_return (call $abs (f64.const 0x1p-1022)) (f64.const 0x1p-1022) (i32.const 1336)) + (call $assert_return (call $abs (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1340)) + (call $assert_return (call $abs (f64.const 0x1p-1)) (f64.const 0x1p-1) (i32.const 1344)) + (call $assert_return (call $abs (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 1348)) + (call $assert_return (call $abs (f64.const 0x1p+0)) (f64.const 0x1p+0) (i32.const 1352)) + (call $assert_return (call $abs (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1356)) + (call $assert_return (call $abs (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1360)) + (call $assert_return (call $abs (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1364)) + (call $assert_return (call $abs (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1368)) + (call $assert_return (call $abs (f64.const -inf)) (f64.const inf) (i32.const 1372)) + (call $assert_return (call $abs (f64.const inf)) (f64.const inf) (i32.const 1376)) + (call $assert_return (call $abs (f64.const -nan)) (f64.const nan) (i32.const 1380)) + (call $assert_return (call $abs (f64.const nan)) (f64.const nan) (i32.const 1384)) + (call $assert_return (call $neg (f64.const -0x0p+0)) (f64.const 0x0p+0) (i32.const 1388)) + (call $assert_return (call $neg (f64.const 0x0p+0)) (f64.const -0x0p+0) (i32.const 1392)) + (call $assert_return (call $neg (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022) (i32.const 1396)) + (call $assert_return (call $neg (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022) (i32.const 1400)) + (call $assert_return (call $neg (f64.const -0x1p-1022)) (f64.const 0x1p-1022) (i32.const 1404)) + (call $assert_return (call $neg (f64.const 0x1p-1022)) (f64.const -0x1p-1022) (i32.const 1408)) + (call $assert_return (call $neg (f64.const -0x1p-1)) (f64.const 0x1p-1) (i32.const 1412)) + (call $assert_return (call $neg (f64.const 0x1p-1)) (f64.const -0x1p-1) (i32.const 1416)) + (call $assert_return (call $neg (f64.const -0x1p+0)) (f64.const 0x1p+0) (i32.const 1420)) + (call $assert_return (call $neg (f64.const 0x1p+0)) (f64.const -0x1p+0) (i32.const 1424)) + (call $assert_return (call $neg (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2) (i32.const 1428)) + (call $assert_return (call $neg (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2) (i32.const 1432)) + (call $assert_return (call $neg (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023) (i32.const 1436)) + (call $assert_return (call $neg (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023) (i32.const 1440)) + (call $assert_return (call $neg (f64.const -inf)) (f64.const inf) (i32.const 1444)) + (call $assert_return (call $neg (f64.const inf)) (f64.const -inf) (i32.const 1448)) + (call $assert_return (call $neg (f64.const -nan)) (f64.const nan) (i32.const 1452)) + (call $assert_return (call $neg (f64.const nan)) (f64.const -nan) (i32.const 1456)) +)) +)====="; + +static const char f64_cmp_test_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (data (i32.const 292) "69") + (data (i32.const 296) "70") + (data (i32.const 300) "71") + (data (i32.const 304) "72") + (data (i32.const 308) "73") + (data (i32.const 312) "74") + (data (i32.const 316) "75") + (data (i32.const 320) "76") + (data (i32.const 324) "77") + (data (i32.const 328) "78") + (data (i32.const 332) "79") + (data (i32.const 336) "80") + (data (i32.const 340) "81") + (data (i32.const 344) "82") + (data (i32.const 348) "83") + (data (i32.const 352) "84") + (data (i32.const 356) "85") + (data (i32.const 360) "86") + (data (i32.const 364) "87") + (data (i32.const 368) "88") + (data (i32.const 372) "89") + (data (i32.const 376) "90") + (data (i32.const 380) "91") + (data (i32.const 384) "92") + (data (i32.const 388) "93") + (data (i32.const 392) "94") + (data (i32.const 396) "95") + (data (i32.const 400) "96") + (data (i32.const 404) "97") + (data (i32.const 408) "98") + (data (i32.const 412) "99") + (data (i32.const 416) "100") + (data (i32.const 420) "101") + (data (i32.const 424) "102") + (data (i32.const 428) "103") + (data (i32.const 432) "104") + (data (i32.const 436) "105") + (data (i32.const 440) "106") + (data (i32.const 444) "107") + (data (i32.const 448) "108") + (data (i32.const 452) "109") + (data (i32.const 456) "110") + (data (i32.const 460) "111") + (data (i32.const 464) "112") + (data (i32.const 468) "113") + (data (i32.const 472) "114") + (data (i32.const 476) "115") + (data (i32.const 480) "116") + (data (i32.const 484) "117") + (data (i32.const 488) "118") + (data (i32.const 492) "119") + (data (i32.const 496) "120") + (data (i32.const 500) "121") + (data (i32.const 504) "122") + (data (i32.const 508) "123") + (data (i32.const 512) "124") + (data (i32.const 516) "125") + (data (i32.const 520) "126") + (data (i32.const 524) "127") + (data (i32.const 528) "128") + (data (i32.const 532) "129") + (data (i32.const 536) "130") + (data (i32.const 540) "131") + (data (i32.const 544) "132") + (data (i32.const 548) "133") + (data (i32.const 552) "134") + (data (i32.const 556) "135") + (data (i32.const 560) "136") + (data (i32.const 564) "137") + (data (i32.const 568) "138") + (data (i32.const 572) "139") + (data (i32.const 576) "140") + (data (i32.const 580) "141") + (data (i32.const 584) "142") + (data (i32.const 588) "143") + (data (i32.const 592) "144") + (data (i32.const 596) "145") + (data (i32.const 600) "146") + (data (i32.const 604) "147") + (data (i32.const 608) "148") + (data (i32.const 612) "149") + (data (i32.const 616) "150") + (data (i32.const 620) "151") + (data (i32.const 624) "152") + (data (i32.const 628) "153") + (data (i32.const 632) "154") + (data (i32.const 636) "155") + (data (i32.const 640) "156") + (data (i32.const 644) "157") + (data (i32.const 648) "158") + (data (i32.const 652) "159") + (data (i32.const 656) "160") + (data (i32.const 660) "161") + (data (i32.const 664) "162") + (data (i32.const 668) "163") + (data (i32.const 672) "164") + (data (i32.const 676) "165") + (data (i32.const 680) "166") + (data (i32.const 684) "167") + (data (i32.const 688) "168") + (data (i32.const 692) "169") + (data (i32.const 696) "170") + (data (i32.const 700) "171") + (data (i32.const 704) "172") + (data (i32.const 708) "173") + (data (i32.const 712) "174") + (data (i32.const 716) "175") + (data (i32.const 720) "176") + (data (i32.const 724) "177") + (data (i32.const 728) "178") + (data (i32.const 732) "179") + (data (i32.const 736) "180") + (data (i32.const 740) "181") + (data (i32.const 744) "182") + (data (i32.const 748) "183") + (data (i32.const 752) "184") + (data (i32.const 756) "185") + (data (i32.const 760) "186") + (data (i32.const 764) "187") + (data (i32.const 768) "188") + (data (i32.const 772) "189") + (data (i32.const 776) "190") + (data (i32.const 780) "191") + (data (i32.const 784) "192") + (data (i32.const 788) "193") + (data (i32.const 792) "194") + (data (i32.const 796) "195") + (data (i32.const 800) "196") + (data (i32.const 804) "197") + (data (i32.const 808) "198") + (data (i32.const 812) "199") + (data (i32.const 816) "200") + (data (i32.const 820) "201") + (data (i32.const 824) "202") + (data (i32.const 828) "203") + (data (i32.const 832) "204") + (data (i32.const 836) "205") + (data (i32.const 840) "206") + (data (i32.const 844) "207") + (data (i32.const 848) "208") + (data (i32.const 852) "209") + (data (i32.const 856) "210") + (data (i32.const 860) "211") + (data (i32.const 864) "212") + (data (i32.const 868) "213") + (data (i32.const 872) "214") + (data (i32.const 876) "215") + (data (i32.const 880) "216") + (data (i32.const 884) "217") + (data (i32.const 888) "218") + (data (i32.const 892) "219") + (data (i32.const 896) "220") + (data (i32.const 900) "221") + (data (i32.const 904) "222") + (data (i32.const 908) "223") + (data (i32.const 912) "224") + (data (i32.const 916) "225") + (data (i32.const 920) "226") + (data (i32.const 924) "227") + (data (i32.const 928) "228") + (data (i32.const 932) "229") + (data (i32.const 936) "230") + (data (i32.const 940) "231") + (data (i32.const 944) "232") + (data (i32.const 948) "233") + (data (i32.const 952) "234") + (data (i32.const 956) "235") + (data (i32.const 960) "236") + (data (i32.const 964) "237") + (data (i32.const 968) "238") + (data (i32.const 972) "239") + (data (i32.const 976) "240") + (data (i32.const 980) "241") + (data (i32.const 984) "242") + (data (i32.const 988) "243") + (data (i32.const 992) "244") + (data (i32.const 996) "245") + (data (i32.const 1000) "246") + (data (i32.const 1004) "247") + (data (i32.const 1008) "248") + (data (i32.const 1012) "249") + (data (i32.const 1016) "250") + (data (i32.const 1020) "251") + (data (i32.const 1024) "252") + (data (i32.const 1028) "253") + (data (i32.const 1032) "254") + (data (i32.const 1036) "255") + (data (i32.const 1040) "256") + (data (i32.const 1044) "257") + (data (i32.const 1048) "258") + (data (i32.const 1052) "259") + (data (i32.const 1056) "260") + (data (i32.const 1060) "261") + (data (i32.const 1064) "262") + (data (i32.const 1068) "263") + (data (i32.const 1072) "264") + (data (i32.const 1076) "265") + (data (i32.const 1080) "266") + (data (i32.const 1084) "267") + (data (i32.const 1088) "268") + (data (i32.const 1092) "269") + (data (i32.const 1096) "270") + (data (i32.const 1100) "271") + (data (i32.const 1104) "272") + (data (i32.const 1108) "273") + (data (i32.const 1112) "274") + (data (i32.const 1116) "275") + (data (i32.const 1120) "276") + (data (i32.const 1124) "277") + (data (i32.const 1128) "278") + (data (i32.const 1132) "279") + (data (i32.const 1136) "280") + (data (i32.const 1140) "281") + (data (i32.const 1144) "282") + (data (i32.const 1148) "283") + (data (i32.const 1152) "284") + (data (i32.const 1156) "285") + (data (i32.const 1160) "286") + (data (i32.const 1164) "287") + (data (i32.const 1168) "288") + (data (i32.const 1172) "289") + (data (i32.const 1176) "290") + (data (i32.const 1180) "291") + (data (i32.const 1184) "292") + (data (i32.const 1188) "293") + (data (i32.const 1192) "294") + (data (i32.const 1196) "295") + (data (i32.const 1200) "296") + (data (i32.const 1204) "297") + (data (i32.const 1208) "298") + (data (i32.const 1212) "299") + (data (i32.const 1216) "300") + (data (i32.const 1220) "301") + (data (i32.const 1224) "302") + (data (i32.const 1228) "303") + (data (i32.const 1232) "304") + (data (i32.const 1236) "305") + (data (i32.const 1240) "306") + (data (i32.const 1244) "307") + (data (i32.const 1248) "308") + (data (i32.const 1252) "309") + (data (i32.const 1256) "310") + (data (i32.const 1260) "311") + (data (i32.const 1264) "312") + (data (i32.const 1268) "313") + (data (i32.const 1272) "314") + (data (i32.const 1276) "315") + (data (i32.const 1280) "316") + (data (i32.const 1284) "317") + (data (i32.const 1288) "318") + (data (i32.const 1292) "319") + (data (i32.const 1296) "320") + (data (i32.const 1300) "321") + (data (i32.const 1304) "322") + (data (i32.const 1308) "323") + (data (i32.const 1312) "324") + (data (i32.const 1316) "325") + (data (i32.const 1320) "326") + (data (i32.const 1324) "327") + (data (i32.const 1328) "328") + (data (i32.const 1332) "329") + (data (i32.const 1336) "330") + (data (i32.const 1340) "331") + (data (i32.const 1344) "332") + (data (i32.const 1348) "333") + (data (i32.const 1352) "334") + (data (i32.const 1356) "335") + (data (i32.const 1360) "336") + (data (i32.const 1364) "337") + (data (i32.const 1368) "338") + (data (i32.const 1372) "339") + (data (i32.const 1376) "340") + (data (i32.const 1380) "341") + (data (i32.const 1384) "342") + (data (i32.const 1388) "343") + (data (i32.const 1392) "344") + (data (i32.const 1396) "345") + (data (i32.const 1400) "346") + (data (i32.const 1404) "347") + (data (i32.const 1408) "348") + (data (i32.const 1412) "349") + (data (i32.const 1416) "350") + (data (i32.const 1420) "351") + (data (i32.const 1424) "352") + (data (i32.const 1428) "353") + (data (i32.const 1432) "354") + (data (i32.const 1436) "355") + (data (i32.const 1440) "356") + (data (i32.const 1444) "357") + (data (i32.const 1448) "358") + (data (i32.const 1452) "359") + (data (i32.const 1456) "360") + (data (i32.const 1460) "361") + (data (i32.const 1464) "362") + (data (i32.const 1468) "363") + (data (i32.const 1472) "364") + (data (i32.const 1476) "365") + (data (i32.const 1480) "366") + (data (i32.const 1484) "367") + (data (i32.const 1488) "368") + (data (i32.const 1492) "369") + (data (i32.const 1496) "370") + (data (i32.const 1500) "371") + (data (i32.const 1504) "372") + (data (i32.const 1508) "373") + (data (i32.const 1512) "374") + (data (i32.const 1516) "375") + (data (i32.const 1520) "376") + (data (i32.const 1524) "377") + (data (i32.const 1528) "378") + (data (i32.const 1532) "379") + (data (i32.const 1536) "380") + (data (i32.const 1540) "381") + (data (i32.const 1544) "382") + (data (i32.const 1548) "383") + (data (i32.const 1552) "384") + (data (i32.const 1556) "385") + (data (i32.const 1560) "386") + (data (i32.const 1564) "387") + (data (i32.const 1568) "388") + (data (i32.const 1572) "389") + (data (i32.const 1576) "390") + (data (i32.const 1580) "391") + (data (i32.const 1584) "392") + (data (i32.const 1588) "393") + (data (i32.const 1592) "394") + (data (i32.const 1596) "395") + (data (i32.const 1600) "396") + (data (i32.const 1604) "397") + (data (i32.const 1608) "398") + (data (i32.const 1612) "399") + (data (i32.const 1616) "400") + (data (i32.const 1620) "401") + (data (i32.const 1624) "402") + (data (i32.const 1628) "403") + (data (i32.const 1632) "404") + (data (i32.const 1636) "405") + (data (i32.const 1640) "406") + (data (i32.const 1644) "407") + (data (i32.const 1648) "408") + (data (i32.const 1652) "409") + (data (i32.const 1656) "410") + (data (i32.const 1660) "411") + (data (i32.const 1664) "412") + (data (i32.const 1668) "413") + (data (i32.const 1672) "414") + (data (i32.const 1676) "415") + (data (i32.const 1680) "416") + (data (i32.const 1684) "417") + (data (i32.const 1688) "418") + (data (i32.const 1692) "419") + (data (i32.const 1696) "420") + (data (i32.const 1700) "421") + (data (i32.const 1704) "422") + (data (i32.const 1708) "423") + (data (i32.const 1712) "424") + (data (i32.const 1716) "425") + (data (i32.const 1720) "426") + (data (i32.const 1724) "427") + (data (i32.const 1728) "428") + (data (i32.const 1732) "429") + (data (i32.const 1736) "430") + (data (i32.const 1740) "431") + (data (i32.const 1744) "432") + (data (i32.const 1748) "433") + (data (i32.const 1752) "434") + (data (i32.const 1756) "435") + (data (i32.const 1760) "436") + (data (i32.const 1764) "437") + (data (i32.const 1768) "438") + (data (i32.const 1772) "439") + (data (i32.const 1776) "440") + (data (i32.const 1780) "441") + (data (i32.const 1784) "442") + (data (i32.const 1788) "443") + (data (i32.const 1792) "444") + (data (i32.const 1796) "445") + (data (i32.const 1800) "446") + (data (i32.const 1804) "447") + (data (i32.const 1808) "448") + (data (i32.const 1812) "449") + (data (i32.const 1816) "450") + (data (i32.const 1820) "451") + (data (i32.const 1824) "452") + (data (i32.const 1828) "453") + (data (i32.const 1832) "454") + (data (i32.const 1836) "455") + (data (i32.const 1840) "456") + (data (i32.const 1844) "457") + (data (i32.const 1848) "458") + (data (i32.const 1852) "459") + (data (i32.const 1856) "460") + (data (i32.const 1860) "461") + (data (i32.const 1864) "462") + (data (i32.const 1868) "463") + (data (i32.const 1872) "464") + (data (i32.const 1876) "465") + (data (i32.const 1880) "466") + (data (i32.const 1884) "467") + (data (i32.const 1888) "468") + (data (i32.const 1892) "469") + (data (i32.const 1896) "470") + (data (i32.const 1900) "471") + (data (i32.const 1904) "472") + (data (i32.const 1908) "473") + (data (i32.const 1912) "474") + (data (i32.const 1916) "475") + (data (i32.const 1920) "476") + (data (i32.const 1924) "477") + (data (i32.const 1928) "478") + (data (i32.const 1932) "479") + (data (i32.const 1936) "480") + (data (i32.const 1940) "481") + (data (i32.const 1944) "482") + (data (i32.const 1948) "483") + (data (i32.const 1952) "484") + (data (i32.const 1956) "485") + (data (i32.const 1960) "486") + (data (i32.const 1964) "487") + (data (i32.const 1968) "488") + (data (i32.const 1972) "489") + (data (i32.const 1976) "490") + (data (i32.const 1980) "491") + (data (i32.const 1984) "492") + (data (i32.const 1988) "493") + (data (i32.const 1992) "494") + (data (i32.const 1996) "495") + (data (i32.const 2000) "496") + (data (i32.const 2004) "497") + (data (i32.const 2008) "498") + (data (i32.const 2012) "499") + (data (i32.const 2016) "500") + (data (i32.const 2020) "501") + (data (i32.const 2024) "502") + (data (i32.const 2028) "503") + (data (i32.const 2032) "504") + (data (i32.const 2036) "505") + (data (i32.const 2040) "506") + (data (i32.const 2044) "507") + (data (i32.const 2048) "508") + (data (i32.const 2052) "509") + (data (i32.const 2056) "510") + (data (i32.const 2060) "511") + (data (i32.const 2064) "512") + (data (i32.const 2068) "513") + (data (i32.const 2072) "514") + (data (i32.const 2076) "515") + (data (i32.const 2080) "516") + (data (i32.const 2084) "517") + (data (i32.const 2088) "518") + (data (i32.const 2092) "519") + (data (i32.const 2096) "520") + (data (i32.const 2100) "521") + (data (i32.const 2104) "522") + (data (i32.const 2108) "523") + (data (i32.const 2112) "524") + (data (i32.const 2116) "525") + (data (i32.const 2120) "526") + (data (i32.const 2124) "527") + (data (i32.const 2128) "528") + (data (i32.const 2132) "529") + (data (i32.const 2136) "530") + (data (i32.const 2140) "531") + (data (i32.const 2144) "532") + (data (i32.const 2148) "533") + (data (i32.const 2152) "534") + (data (i32.const 2156) "535") + (data (i32.const 2160) "536") + (data (i32.const 2164) "537") + (data (i32.const 2168) "538") + (data (i32.const 2172) "539") + (data (i32.const 2176) "540") + (data (i32.const 2180) "541") + (data (i32.const 2184) "542") + (data (i32.const 2188) "543") + (data (i32.const 2192) "544") + (data (i32.const 2196) "545") + (data (i32.const 2200) "546") + (data (i32.const 2204) "547") + (data (i32.const 2208) "548") + (data (i32.const 2212) "549") + (data (i32.const 2216) "550") + (data (i32.const 2220) "551") + (data (i32.const 2224) "552") + (data (i32.const 2228) "553") + (data (i32.const 2232) "554") + (data (i32.const 2236) "555") + (data (i32.const 2240) "556") + (data (i32.const 2244) "557") + (data (i32.const 2248) "558") + (data (i32.const 2252) "559") + (data (i32.const 2256) "560") + (data (i32.const 2260) "561") + (data (i32.const 2264) "562") + (data (i32.const 2268) "563") + (data (i32.const 2272) "564") + (data (i32.const 2276) "565") + (data (i32.const 2280) "566") + (data (i32.const 2284) "567") + (data (i32.const 2288) "568") + (data (i32.const 2292) "569") + (data (i32.const 2296) "570") + (data (i32.const 2300) "571") + (data (i32.const 2304) "572") + (data (i32.const 2308) "573") + (data (i32.const 2312) "574") + (data (i32.const 2316) "575") + (data (i32.const 2320) "576") + (data (i32.const 2324) "577") + (data (i32.const 2328) "578") + (data (i32.const 2332) "579") + (data (i32.const 2336) "580") + (data (i32.const 2340) "581") + (data (i32.const 2344) "582") + (data (i32.const 2348) "583") + (data (i32.const 2352) "584") + (data (i32.const 2356) "585") + (data (i32.const 2360) "586") + (data (i32.const 2364) "587") + (data (i32.const 2368) "588") + (data (i32.const 2372) "589") + (data (i32.const 2376) "590") + (data (i32.const 2380) "591") + (data (i32.const 2384) "592") + (data (i32.const 2388) "593") + (data (i32.const 2392) "594") + (data (i32.const 2396) "595") + (data (i32.const 2400) "596") + (data (i32.const 2404) "597") + (data (i32.const 2408) "598") + (data (i32.const 2412) "599") + (data (i32.const 2416) "600") + (data (i32.const 2420) "601") + (data (i32.const 2424) "602") + (data (i32.const 2428) "603") + (data (i32.const 2432) "604") + (data (i32.const 2436) "605") + (data (i32.const 2440) "606") + (data (i32.const 2444) "607") + (data (i32.const 2448) "608") + (data (i32.const 2452) "609") + (data (i32.const 2456) "610") + (data (i32.const 2460) "611") + (data (i32.const 2464) "612") + (data (i32.const 2468) "613") + (data (i32.const 2472) "614") + (data (i32.const 2476) "615") + (data (i32.const 2480) "616") + (data (i32.const 2484) "617") + (data (i32.const 2488) "618") + (data (i32.const 2492) "619") + (data (i32.const 2496) "620") + (data (i32.const 2500) "621") + (data (i32.const 2504) "622") + (data (i32.const 2508) "623") + (data (i32.const 2512) "624") + (data (i32.const 2516) "625") + (data (i32.const 2520) "626") + (data (i32.const 2524) "627") + (data (i32.const 2528) "628") + (data (i32.const 2532) "629") + (data (i32.const 2536) "630") + (data (i32.const 2540) "631") + (data (i32.const 2544) "632") + (data (i32.const 2548) "633") + (data (i32.const 2552) "634") + (data (i32.const 2556) "635") + (data (i32.const 2560) "636") + (data (i32.const 2564) "637") + (data (i32.const 2568) "638") + (data (i32.const 2572) "639") + (data (i32.const 2576) "640") + (data (i32.const 2580) "641") + (data (i32.const 2584) "642") + (data (i32.const 2588) "643") + (data (i32.const 2592) "644") + (data (i32.const 2596) "645") + (data (i32.const 2600) "646") + (data (i32.const 2604) "647") + (data (i32.const 2608) "648") + (data (i32.const 2612) "649") + (data (i32.const 2616) "650") + (data (i32.const 2620) "651") + (data (i32.const 2624) "652") + (data (i32.const 2628) "653") + (data (i32.const 2632) "654") + (data (i32.const 2636) "655") + (data (i32.const 2640) "656") + (data (i32.const 2644) "657") + (data (i32.const 2648) "658") + (data (i32.const 2652) "659") + (data (i32.const 2656) "660") + (data (i32.const 2660) "661") + (data (i32.const 2664) "662") + (data (i32.const 2668) "663") + (data (i32.const 2672) "664") + (data (i32.const 2676) "665") + (data (i32.const 2680) "666") + (data (i32.const 2684) "667") + (data (i32.const 2688) "668") + (data (i32.const 2692) "669") + (data (i32.const 2696) "670") + (data (i32.const 2700) "671") + (data (i32.const 2704) "672") + (data (i32.const 2708) "673") + (data (i32.const 2712) "674") + (data (i32.const 2716) "675") + (data (i32.const 2720) "676") + (data (i32.const 2724) "677") + (data (i32.const 2728) "678") + (data (i32.const 2732) "679") + (data (i32.const 2736) "680") + (data (i32.const 2740) "681") + (data (i32.const 2744) "682") + (data (i32.const 2748) "683") + (data (i32.const 2752) "684") + (data (i32.const 2756) "685") + (data (i32.const 2760) "686") + (data (i32.const 2764) "687") + (data (i32.const 2768) "688") + (data (i32.const 2772) "689") + (data (i32.const 2776) "690") + (data (i32.const 2780) "691") + (data (i32.const 2784) "692") + (data (i32.const 2788) "693") + (data (i32.const 2792) "694") + (data (i32.const 2796) "695") + (data (i32.const 2800) "696") + (data (i32.const 2804) "697") + (data (i32.const 2808) "698") + (data (i32.const 2812) "699") + (data (i32.const 2816) "700") + (data (i32.const 2820) "701") + (data (i32.const 2824) "702") + (data (i32.const 2828) "703") + (data (i32.const 2832) "704") + (data (i32.const 2836) "705") + (data (i32.const 2840) "706") + (data (i32.const 2844) "707") + (data (i32.const 2848) "708") + (data (i32.const 2852) "709") + (data (i32.const 2856) "710") + (data (i32.const 2860) "711") + (data (i32.const 2864) "712") + (data (i32.const 2868) "713") + (data (i32.const 2872) "714") + (data (i32.const 2876) "715") + (data (i32.const 2880) "716") + (data (i32.const 2884) "717") + (data (i32.const 2888) "718") + (data (i32.const 2892) "719") + (data (i32.const 2896) "720") + (data (i32.const 2900) "721") + (data (i32.const 2904) "722") + (data (i32.const 2908) "723") + (data (i32.const 2912) "724") + (data (i32.const 2916) "725") + (data (i32.const 2920) "726") + (data (i32.const 2924) "727") + (data (i32.const 2928) "728") + (data (i32.const 2932) "729") + (data (i32.const 2936) "730") + (data (i32.const 2940) "731") + (data (i32.const 2944) "732") + (data (i32.const 2948) "733") + (data (i32.const 2952) "734") + (data (i32.const 2956) "735") + (data (i32.const 2960) "736") + (data (i32.const 2964) "737") + (data (i32.const 2968) "738") + (data (i32.const 2972) "739") + (data (i32.const 2976) "740") + (data (i32.const 2980) "741") + (data (i32.const 2984) "742") + (data (i32.const 2988) "743") + (data (i32.const 2992) "744") + (data (i32.const 2996) "745") + (data (i32.const 3000) "746") + (data (i32.const 3004) "747") + (data (i32.const 3008) "748") + (data (i32.const 3012) "749") + (data (i32.const 3016) "750") + (data (i32.const 3020) "751") + (data (i32.const 3024) "752") + (data (i32.const 3028) "753") + (data (i32.const 3032) "754") + (data (i32.const 3036) "755") + (data (i32.const 3040) "756") + (data (i32.const 3044) "757") + (data (i32.const 3048) "758") + (data (i32.const 3052) "759") + (data (i32.const 3056) "760") + (data (i32.const 3060) "761") + (data (i32.const 3064) "762") + (data (i32.const 3068) "763") + (data (i32.const 3072) "764") + (data (i32.const 3076) "765") + (data (i32.const 3080) "766") + (data (i32.const 3084) "767") + (data (i32.const 3088) "768") + (data (i32.const 3092) "769") + (data (i32.const 3096) "770") + (data (i32.const 3100) "771") + (data (i32.const 3104) "772") + (data (i32.const 3108) "773") + (data (i32.const 3112) "774") + (data (i32.const 3116) "775") + (data (i32.const 3120) "776") + (data (i32.const 3124) "777") + (data (i32.const 3128) "778") + (data (i32.const 3132) "779") + (data (i32.const 3136) "780") + (data (i32.const 3140) "781") + (data (i32.const 3144) "782") + (data (i32.const 3148) "783") + (data (i32.const 3152) "784") + (data (i32.const 3156) "785") + (data (i32.const 3160) "786") + (data (i32.const 3164) "787") + (data (i32.const 3168) "788") + (data (i32.const 3172) "789") + (data (i32.const 3176) "790") + (data (i32.const 3180) "791") + (data (i32.const 3184) "792") + (data (i32.const 3188) "793") + (data (i32.const 3192) "794") + (data (i32.const 3196) "795") + (data (i32.const 3200) "796") + (data (i32.const 3204) "797") + (data (i32.const 3208) "798") + (data (i32.const 3212) "799") + (data (i32.const 3216) "800") + (data (i32.const 3220) "801") + (data (i32.const 3224) "802") + (data (i32.const 3228) "803") + (data (i32.const 3232) "804") + (data (i32.const 3236) "805") + (data (i32.const 3240) "806") + (data (i32.const 3244) "807") + (data (i32.const 3248) "808") + (data (i32.const 3252) "809") + (data (i32.const 3256) "810") + (data (i32.const 3260) "811") + (data (i32.const 3264) "812") + (data (i32.const 3268) "813") + (data (i32.const 3272) "814") + (data (i32.const 3276) "815") + (data (i32.const 3280) "816") + (data (i32.const 3284) "817") + (data (i32.const 3288) "818") + (data (i32.const 3292) "819") + (data (i32.const 3296) "820") + (data (i32.const 3300) "821") + (data (i32.const 3304) "822") + (data (i32.const 3308) "823") + (data (i32.const 3312) "824") + (data (i32.const 3316) "825") + (data (i32.const 3320) "826") + (data (i32.const 3324) "827") + (data (i32.const 3328) "828") + (data (i32.const 3332) "829") + (data (i32.const 3336) "830") + (data (i32.const 3340) "831") + (data (i32.const 3344) "832") + (data (i32.const 3348) "833") + (data (i32.const 3352) "834") + (data (i32.const 3356) "835") + (data (i32.const 3360) "836") + (data (i32.const 3364) "837") + (data (i32.const 3368) "838") + (data (i32.const 3372) "839") + (data (i32.const 3376) "840") + (data (i32.const 3380) "841") + (data (i32.const 3384) "842") + (data (i32.const 3388) "843") + (data (i32.const 3392) "844") + (data (i32.const 3396) "845") + (data (i32.const 3400) "846") + (data (i32.const 3404) "847") + (data (i32.const 3408) "848") + (data (i32.const 3412) "849") + (data (i32.const 3416) "850") + (data (i32.const 3420) "851") + (data (i32.const 3424) "852") + (data (i32.const 3428) "853") + (data (i32.const 3432) "854") + (data (i32.const 3436) "855") + (data (i32.const 3440) "856") + (data (i32.const 3444) "857") + (data (i32.const 3448) "858") + (data (i32.const 3452) "859") + (data (i32.const 3456) "860") + (data (i32.const 3460) "861") + (data (i32.const 3464) "862") + (data (i32.const 3468) "863") + (data (i32.const 3472) "864") + (data (i32.const 3476) "865") + (data (i32.const 3480) "866") + (data (i32.const 3484) "867") + (data (i32.const 3488) "868") + (data (i32.const 3492) "869") + (data (i32.const 3496) "870") + (data (i32.const 3500) "871") + (data (i32.const 3504) "872") + (data (i32.const 3508) "873") + (data (i32.const 3512) "874") + (data (i32.const 3516) "875") + (data (i32.const 3520) "876") + (data (i32.const 3524) "877") + (data (i32.const 3528) "878") + (data (i32.const 3532) "879") + (data (i32.const 3536) "880") + (data (i32.const 3540) "881") + (data (i32.const 3544) "882") + (data (i32.const 3548) "883") + (data (i32.const 3552) "884") + (data (i32.const 3556) "885") + (data (i32.const 3560) "886") + (data (i32.const 3564) "887") + (data (i32.const 3568) "888") + (data (i32.const 3572) "889") + (data (i32.const 3576) "890") + (data (i32.const 3580) "891") + (data (i32.const 3584) "892") + (data (i32.const 3588) "893") + (data (i32.const 3592) "894") + (data (i32.const 3596) "895") + (data (i32.const 3600) "896") + (data (i32.const 3604) "897") + (data (i32.const 3608) "898") + (data (i32.const 3612) "899") + (data (i32.const 3616) "900") + (data (i32.const 3620) "901") + (data (i32.const 3624) "902") + (data (i32.const 3628) "903") + (data (i32.const 3632) "904") + (data (i32.const 3636) "905") + (data (i32.const 3640) "906") + (data (i32.const 3644) "907") + (data (i32.const 3648) "908") + (data (i32.const 3652) "909") + (data (i32.const 3656) "910") + (data (i32.const 3660) "911") + (data (i32.const 3664) "912") + (data (i32.const 3668) "913") + (data (i32.const 3672) "914") + (data (i32.const 3676) "915") + (data (i32.const 3680) "916") + (data (i32.const 3684) "917") + (data (i32.const 3688) "918") + (data (i32.const 3692) "919") + (data (i32.const 3696) "920") + (data (i32.const 3700) "921") + (data (i32.const 3704) "922") + (data (i32.const 3708) "923") + (data (i32.const 3712) "924") + (data (i32.const 3716) "925") + (data (i32.const 3720) "926") + (data (i32.const 3724) "927") + (data (i32.const 3728) "928") + (data (i32.const 3732) "929") + (data (i32.const 3736) "930") + (data (i32.const 3740) "931") + (data (i32.const 3744) "932") + (data (i32.const 3748) "933") + (data (i32.const 3752) "934") + (data (i32.const 3756) "935") + (data (i32.const 3760) "936") + (data (i32.const 3764) "937") + (data (i32.const 3768) "938") + (data (i32.const 3772) "939") + (data (i32.const 3776) "940") + (data (i32.const 3780) "941") + (data (i32.const 3784) "942") + (data (i32.const 3788) "943") + (data (i32.const 3792) "944") + (data (i32.const 3796) "945") + (data (i32.const 3800) "946") + (data (i32.const 3804) "947") + (data (i32.const 3808) "948") + (data (i32.const 3812) "949") + (data (i32.const 3816) "950") + (data (i32.const 3820) "951") + (data (i32.const 3824) "952") + (data (i32.const 3828) "953") + (data (i32.const 3832) "954") + (data (i32.const 3836) "955") + (data (i32.const 3840) "956") + (data (i32.const 3844) "957") + (data (i32.const 3848) "958") + (data (i32.const 3852) "959") + (data (i32.const 3856) "960") + (data (i32.const 3860) "961") + (data (i32.const 3864) "962") + (data (i32.const 3868) "963") + (data (i32.const 3872) "964") + (data (i32.const 3876) "965") + (data (i32.const 3880) "966") + (data (i32.const 3884) "967") + (data (i32.const 3888) "968") + (data (i32.const 3892) "969") + (data (i32.const 3896) "970") + (data (i32.const 3900) "971") + (data (i32.const 3904) "972") + (data (i32.const 3908) "973") + (data (i32.const 3912) "974") + (data (i32.const 3916) "975") + (data (i32.const 3920) "976") + (data (i32.const 3924) "977") + (data (i32.const 3928) "978") + (data (i32.const 3932) "979") + (data (i32.const 3936) "980") + (data (i32.const 3940) "981") + (data (i32.const 3944) "982") + (data (i32.const 3948) "983") + (data (i32.const 3952) "984") + (data (i32.const 3956) "985") + (data (i32.const 3960) "986") + (data (i32.const 3964) "987") + (data (i32.const 3968) "988") + (data (i32.const 3972) "989") + (data (i32.const 3976) "990") + (data (i32.const 3980) "991") + (data (i32.const 3984) "992") + (data (i32.const 3988) "993") + (data (i32.const 3992) "994") + (data (i32.const 3996) "995") + (data (i32.const 4000) "996") + (data (i32.const 4004) "997") + (data (i32.const 4008) "998") + (data (i32.const 4012) "999") + (data (i32.const 4016) "1000") + (data (i32.const 4020) "1001") + (data (i32.const 4024) "1002") + (data (i32.const 4028) "1003") + (data (i32.const 4032) "1004") + (data (i32.const 4036) "1005") + (data (i32.const 4040) "1006") + (data (i32.const 4044) "1007") + (data (i32.const 4048) "1008") + (data (i32.const 4052) "1009") + (data (i32.const 4056) "1010") + (data (i32.const 4060) "1011") + (data (i32.const 4064) "1012") + (data (i32.const 4068) "1013") + (data (i32.const 4072) "1014") + (data (i32.const 4076) "1015") + (data (i32.const 4080) "1016") + (data (i32.const 4084) "1017") + (data (i32.const 4088) "1018") + (data (i32.const 4092) "1019") + (data (i32.const 4096) "1020") + (data (i32.const 4100) "1021") + (data (i32.const 4104) "1022") + (data (i32.const 4108) "1023") + (data (i32.const 4112) "1024") + (data (i32.const 4116) "1025") + (data (i32.const 4120) "1026") + (data (i32.const 4124) "1027") + (data (i32.const 4128) "1028") + (data (i32.const 4132) "1029") + (data (i32.const 4136) "1030") + (data (i32.const 4140) "1031") + (data (i32.const 4144) "1032") + (data (i32.const 4148) "1033") + (data (i32.const 4152) "1034") + (data (i32.const 4156) "1035") + (data (i32.const 4160) "1036") + (data (i32.const 4164) "1037") + (data (i32.const 4168) "1038") + (data (i32.const 4172) "1039") + (data (i32.const 4176) "1040") + (data (i32.const 4180) "1041") + (data (i32.const 4184) "1042") + (data (i32.const 4188) "1043") + (data (i32.const 4192) "1044") + (data (i32.const 4196) "1045") + (data (i32.const 4200) "1046") + (data (i32.const 4204) "1047") + (data (i32.const 4208) "1048") + (data (i32.const 4212) "1049") + (data (i32.const 4216) "1050") + (data (i32.const 4220) "1051") + (data (i32.const 4224) "1052") + (data (i32.const 4228) "1053") + (data (i32.const 4232) "1054") + (data (i32.const 4236) "1055") + (data (i32.const 4240) "1056") + (data (i32.const 4244) "1057") + (data (i32.const 4248) "1058") + (data (i32.const 4252) "1059") + (data (i32.const 4256) "1060") + (data (i32.const 4260) "1061") + (data (i32.const 4264) "1062") + (data (i32.const 4268) "1063") + (data (i32.const 4272) "1064") + (data (i32.const 4276) "1065") + (data (i32.const 4280) "1066") + (data (i32.const 4284) "1067") + (data (i32.const 4288) "1068") + (data (i32.const 4292) "1069") + (data (i32.const 4296) "1070") + (data (i32.const 4300) "1071") + (data (i32.const 4304) "1072") + (data (i32.const 4308) "1073") + (data (i32.const 4312) "1074") + (data (i32.const 4316) "1075") + (data (i32.const 4320) "1076") + (data (i32.const 4324) "1077") + (data (i32.const 4328) "1078") + (data (i32.const 4332) "1079") + (data (i32.const 4336) "1080") + (data (i32.const 4340) "1081") + (data (i32.const 4344) "1082") + (data (i32.const 4348) "1083") + (data (i32.const 4352) "1084") + (data (i32.const 4356) "1085") + (data (i32.const 4360) "1086") + (data (i32.const 4364) "1087") + (data (i32.const 4368) "1088") + (data (i32.const 4372) "1089") + (data (i32.const 4376) "1090") + (data (i32.const 4380) "1091") + (data (i32.const 4384) "1092") + (data (i32.const 4388) "1093") + (data (i32.const 4392) "1094") + (data (i32.const 4396) "1095") + (data (i32.const 4400) "1096") + (data (i32.const 4404) "1097") + (data (i32.const 4408) "1098") + (data (i32.const 4412) "1099") + (data (i32.const 4416) "1100") + (data (i32.const 4420) "1101") + (data (i32.const 4424) "1102") + (data (i32.const 4428) "1103") + (data (i32.const 4432) "1104") + (data (i32.const 4436) "1105") + (data (i32.const 4440) "1106") + (data (i32.const 4444) "1107") + (data (i32.const 4448) "1108") + (data (i32.const 4452) "1109") + (data (i32.const 4456) "1110") + (data (i32.const 4460) "1111") + (data (i32.const 4464) "1112") + (data (i32.const 4468) "1113") + (data (i32.const 4472) "1114") + (data (i32.const 4476) "1115") + (data (i32.const 4480) "1116") + (data (i32.const 4484) "1117") + (data (i32.const 4488) "1118") + (data (i32.const 4492) "1119") + (data (i32.const 4496) "1120") + (data (i32.const 4500) "1121") + (data (i32.const 4504) "1122") + (data (i32.const 4508) "1123") + (data (i32.const 4512) "1124") + (data (i32.const 4516) "1125") + (data (i32.const 4520) "1126") + (data (i32.const 4524) "1127") + (data (i32.const 4528) "1128") + (data (i32.const 4532) "1129") + (data (i32.const 4536) "1130") + (data (i32.const 4540) "1131") + (data (i32.const 4544) "1132") + (data (i32.const 4548) "1133") + (data (i32.const 4552) "1134") + (data (i32.const 4556) "1135") + (data (i32.const 4560) "1136") + (data (i32.const 4564) "1137") + (data (i32.const 4568) "1138") + (data (i32.const 4572) "1139") + (data (i32.const 4576) "1140") + (data (i32.const 4580) "1141") + (data (i32.const 4584) "1142") + (data (i32.const 4588) "1143") + (data (i32.const 4592) "1144") + (data (i32.const 4596) "1145") + (data (i32.const 4600) "1146") + (data (i32.const 4604) "1147") + (data (i32.const 4608) "1148") + (data (i32.const 4612) "1149") + (data (i32.const 4616) "1150") + (data (i32.const 4620) "1151") + (data (i32.const 4624) "1152") + (data (i32.const 4628) "1153") + (data (i32.const 4632) "1154") + (data (i32.const 4636) "1155") + (data (i32.const 4640) "1156") + (data (i32.const 4644) "1157") + (data (i32.const 4648) "1158") + (data (i32.const 4652) "1159") + (data (i32.const 4656) "1160") + (data (i32.const 4660) "1161") + (data (i32.const 4664) "1162") + (data (i32.const 4668) "1163") + (data (i32.const 4672) "1164") + (data (i32.const 4676) "1165") + (data (i32.const 4680) "1166") + (data (i32.const 4684) "1167") + (data (i32.const 4688) "1168") + (data (i32.const 4692) "1169") + (data (i32.const 4696) "1170") + (data (i32.const 4700) "1171") + (data (i32.const 4704) "1172") + (data (i32.const 4708) "1173") + (data (i32.const 4712) "1174") + (data (i32.const 4716) "1175") + (data (i32.const 4720) "1176") + (data (i32.const 4724) "1177") + (data (i32.const 4728) "1178") + (data (i32.const 4732) "1179") + (data (i32.const 4736) "1180") + (data (i32.const 4740) "1181") + (data (i32.const 4744) "1182") + (data (i32.const 4748) "1183") + (data (i32.const 4752) "1184") + (data (i32.const 4756) "1185") + (data (i32.const 4760) "1186") + (data (i32.const 4764) "1187") + (data (i32.const 4768) "1188") + (data (i32.const 4772) "1189") + (data (i32.const 4776) "1190") + (data (i32.const 4780) "1191") + (data (i32.const 4784) "1192") + (data (i32.const 4788) "1193") + (data (i32.const 4792) "1194") + (data (i32.const 4796) "1195") + (data (i32.const 4800) "1196") + (data (i32.const 4804) "1197") + (data (i32.const 4808) "1198") + (data (i32.const 4812) "1199") + (data (i32.const 4816) "1200") + (data (i32.const 4820) "1201") + (data (i32.const 4824) "1202") + (data (i32.const 4828) "1203") + (data (i32.const 4832) "1204") + (data (i32.const 4836) "1205") + (data (i32.const 4840) "1206") + (data (i32.const 4844) "1207") + (data (i32.const 4848) "1208") + (data (i32.const 4852) "1209") + (data (i32.const 4856) "1210") + (data (i32.const 4860) "1211") + (data (i32.const 4864) "1212") + (data (i32.const 4868) "1213") + (data (i32.const 4872) "1214") + (data (i32.const 4876) "1215") + (data (i32.const 4880) "1216") + (data (i32.const 4884) "1217") + (data (i32.const 4888) "1218") + (data (i32.const 4892) "1219") + (data (i32.const 4896) "1220") + (data (i32.const 4900) "1221") + (data (i32.const 4904) "1222") + (data (i32.const 4908) "1223") + (data (i32.const 4912) "1224") + (data (i32.const 4916) "1225") + (data (i32.const 4920) "1226") + (data (i32.const 4924) "1227") + (data (i32.const 4928) "1228") + (data (i32.const 4932) "1229") + (data (i32.const 4936) "1230") + (data (i32.const 4940) "1231") + (data (i32.const 4944) "1232") + (data (i32.const 4948) "1233") + (data (i32.const 4952) "1234") + (data (i32.const 4956) "1235") + (data (i32.const 4960) "1236") + (data (i32.const 4964) "1237") + (data (i32.const 4968) "1238") + (data (i32.const 4972) "1239") + (data (i32.const 4976) "1240") + (data (i32.const 4980) "1241") + (data (i32.const 4984) "1242") + (data (i32.const 4988) "1243") + (data (i32.const 4992) "1244") + (data (i32.const 4996) "1245") + (data (i32.const 5000) "1246") + (data (i32.const 5004) "1247") + (data (i32.const 5008) "1248") + (data (i32.const 5012) "1249") + (data (i32.const 5016) "1250") + (data (i32.const 5020) "1251") + (data (i32.const 5024) "1252") + (data (i32.const 5028) "1253") + (data (i32.const 5032) "1254") + (data (i32.const 5036) "1255") + (data (i32.const 5040) "1256") + (data (i32.const 5044) "1257") + (data (i32.const 5048) "1258") + (data (i32.const 5052) "1259") + (data (i32.const 5056) "1260") + (data (i32.const 5060) "1261") + (data (i32.const 5064) "1262") + (data (i32.const 5068) "1263") + (data (i32.const 5072) "1264") + (data (i32.const 5076) "1265") + (data (i32.const 5080) "1266") + (data (i32.const 5084) "1267") + (data (i32.const 5088) "1268") + (data (i32.const 5092) "1269") + (data (i32.const 5096) "1270") + (data (i32.const 5100) "1271") + (data (i32.const 5104) "1272") + (data (i32.const 5108) "1273") + (data (i32.const 5112) "1274") + (data (i32.const 5116) "1275") + (data (i32.const 5120) "1276") + (data (i32.const 5124) "1277") + (data (i32.const 5128) "1278") + (data (i32.const 5132) "1279") + (data (i32.const 5136) "1280") + (data (i32.const 5140) "1281") + (data (i32.const 5144) "1282") + (data (i32.const 5148) "1283") + (data (i32.const 5152) "1284") + (data (i32.const 5156) "1285") + (data (i32.const 5160) "1286") + (data (i32.const 5164) "1287") + (data (i32.const 5168) "1288") + (data (i32.const 5172) "1289") + (data (i32.const 5176) "1290") + (data (i32.const 5180) "1291") + (data (i32.const 5184) "1292") + (data (i32.const 5188) "1293") + (data (i32.const 5192) "1294") + (data (i32.const 5196) "1295") + (data (i32.const 5200) "1296") + (data (i32.const 5204) "1297") + (data (i32.const 5208) "1298") + (data (i32.const 5212) "1299") + (data (i32.const 5216) "1300") + (data (i32.const 5220) "1301") + (data (i32.const 5224) "1302") + (data (i32.const 5228) "1303") + (data (i32.const 5232) "1304") + (data (i32.const 5236) "1305") + (data (i32.const 5240) "1306") + (data (i32.const 5244) "1307") + (data (i32.const 5248) "1308") + (data (i32.const 5252) "1309") + (data (i32.const 5256) "1310") + (data (i32.const 5260) "1311") + (data (i32.const 5264) "1312") + (data (i32.const 5268) "1313") + (data (i32.const 5272) "1314") + (data (i32.const 5276) "1315") + (data (i32.const 5280) "1316") + (data (i32.const 5284) "1317") + (data (i32.const 5288) "1318") + (data (i32.const 5292) "1319") + (data (i32.const 5296) "1320") + (data (i32.const 5300) "1321") + (data (i32.const 5304) "1322") + (data (i32.const 5308) "1323") + (data (i32.const 5312) "1324") + (data (i32.const 5316) "1325") + (data (i32.const 5320) "1326") + (data (i32.const 5324) "1327") + (data (i32.const 5328) "1328") + (data (i32.const 5332) "1329") + (data (i32.const 5336) "1330") + (data (i32.const 5340) "1331") + (data (i32.const 5344) "1332") + (data (i32.const 5348) "1333") + (data (i32.const 5352) "1334") + (data (i32.const 5356) "1335") + (data (i32.const 5360) "1336") + (data (i32.const 5364) "1337") + (data (i32.const 5368) "1338") + (data (i32.const 5372) "1339") + (data (i32.const 5376) "1340") + (data (i32.const 5380) "1341") + (data (i32.const 5384) "1342") + (data (i32.const 5388) "1343") + (data (i32.const 5392) "1344") + (data (i32.const 5396) "1345") + (data (i32.const 5400) "1346") + (data (i32.const 5404) "1347") + (data (i32.const 5408) "1348") + (data (i32.const 5412) "1349") + (data (i32.const 5416) "1350") + (data (i32.const 5420) "1351") + (data (i32.const 5424) "1352") + (data (i32.const 5428) "1353") + (data (i32.const 5432) "1354") + (data (i32.const 5436) "1355") + (data (i32.const 5440) "1356") + (data (i32.const 5444) "1357") + (data (i32.const 5448) "1358") + (data (i32.const 5452) "1359") + (data (i32.const 5456) "1360") + (data (i32.const 5460) "1361") + (data (i32.const 5464) "1362") + (data (i32.const 5468) "1363") + (data (i32.const 5472) "1364") + (data (i32.const 5476) "1365") + (data (i32.const 5480) "1366") + (data (i32.const 5484) "1367") + (data (i32.const 5488) "1368") + (data (i32.const 5492) "1369") + (data (i32.const 5496) "1370") + (data (i32.const 5500) "1371") + (data (i32.const 5504) "1372") + (data (i32.const 5508) "1373") + (data (i32.const 5512) "1374") + (data (i32.const 5516) "1375") + (data (i32.const 5520) "1376") + (data (i32.const 5524) "1377") + (data (i32.const 5528) "1378") + (data (i32.const 5532) "1379") + (data (i32.const 5536) "1380") + (data (i32.const 5540) "1381") + (data (i32.const 5544) "1382") + (data (i32.const 5548) "1383") + (data (i32.const 5552) "1384") + (data (i32.const 5556) "1385") + (data (i32.const 5560) "1386") + (data (i32.const 5564) "1387") + (data (i32.const 5568) "1388") + (data (i32.const 5572) "1389") + (data (i32.const 5576) "1390") + (data (i32.const 5580) "1391") + (data (i32.const 5584) "1392") + (data (i32.const 5588) "1393") + (data (i32.const 5592) "1394") + (data (i32.const 5596) "1395") + (data (i32.const 5600) "1396") + (data (i32.const 5604) "1397") + (data (i32.const 5608) "1398") + (data (i32.const 5612) "1399") + (data (i32.const 5616) "1400") + (data (i32.const 5620) "1401") + (data (i32.const 5624) "1402") + (data (i32.const 5628) "1403") + (data (i32.const 5632) "1404") + (data (i32.const 5636) "1405") + (data (i32.const 5640) "1406") + (data (i32.const 5644) "1407") + (data (i32.const 5648) "1408") + (data (i32.const 5652) "1409") + (data (i32.const 5656) "1410") + (data (i32.const 5660) "1411") + (data (i32.const 5664) "1412") + (data (i32.const 5668) "1413") + (data (i32.const 5672) "1414") + (data (i32.const 5676) "1415") + (data (i32.const 5680) "1416") + (data (i32.const 5684) "1417") + (data (i32.const 5688) "1418") + (data (i32.const 5692) "1419") + (data (i32.const 5696) "1420") + (data (i32.const 5700) "1421") + (data (i32.const 5704) "1422") + (data (i32.const 5708) "1423") + (data (i32.const 5712) "1424") + (data (i32.const 5716) "1425") + (data (i32.const 5720) "1426") + (data (i32.const 5724) "1427") + (data (i32.const 5728) "1428") + (data (i32.const 5732) "1429") + (data (i32.const 5736) "1430") + (data (i32.const 5740) "1431") + (data (i32.const 5744) "1432") + (data (i32.const 5748) "1433") + (data (i32.const 5752) "1434") + (data (i32.const 5756) "1435") + (data (i32.const 5760) "1436") + (data (i32.const 5764) "1437") + (data (i32.const 5768) "1438") + (data (i32.const 5772) "1439") + (data (i32.const 5776) "1440") + (data (i32.const 5780) "1441") + (data (i32.const 5784) "1442") + (data (i32.const 5788) "1443") + (data (i32.const 5792) "1444") + (data (i32.const 5796) "1445") + (data (i32.const 5800) "1446") + (data (i32.const 5804) "1447") + (data (i32.const 5808) "1448") + (data (i32.const 5812) "1449") + (data (i32.const 5816) "1450") + (data (i32.const 5820) "1451") + (data (i32.const 5824) "1452") + (data (i32.const 5828) "1453") + (data (i32.const 5832) "1454") + (data (i32.const 5836) "1455") + (data (i32.const 5840) "1456") + (data (i32.const 5844) "1457") + (data (i32.const 5848) "1458") + (data (i32.const 5852) "1459") + (data (i32.const 5856) "1460") + (data (i32.const 5860) "1461") + (data (i32.const 5864) "1462") + (data (i32.const 5868) "1463") + (data (i32.const 5872) "1464") + (data (i32.const 5876) "1465") + (data (i32.const 5880) "1466") + (data (i32.const 5884) "1467") + (data (i32.const 5888) "1468") + (data (i32.const 5892) "1469") + (data (i32.const 5896) "1470") + (data (i32.const 5900) "1471") + (data (i32.const 5904) "1472") + (data (i32.const 5908) "1473") + (data (i32.const 5912) "1474") + (data (i32.const 5916) "1475") + (data (i32.const 5920) "1476") + (data (i32.const 5924) "1477") + (data (i32.const 5928) "1478") + (data (i32.const 5932) "1479") + (data (i32.const 5936) "1480") + (data (i32.const 5940) "1481") + (data (i32.const 5944) "1482") + (data (i32.const 5948) "1483") + (data (i32.const 5952) "1484") + (data (i32.const 5956) "1485") + (data (i32.const 5960) "1486") + (data (i32.const 5964) "1487") + (data (i32.const 5968) "1488") + (data (i32.const 5972) "1489") + (data (i32.const 5976) "1490") + (data (i32.const 5980) "1491") + (data (i32.const 5984) "1492") + (data (i32.const 5988) "1493") + (data (i32.const 5992) "1494") + (data (i32.const 5996) "1495") + (data (i32.const 6000) "1496") + (data (i32.const 6004) "1497") + (data (i32.const 6008) "1498") + (data (i32.const 6012) "1499") + (data (i32.const 6016) "1500") + (data (i32.const 6020) "1501") + (data (i32.const 6024) "1502") + (data (i32.const 6028) "1503") + (data (i32.const 6032) "1504") + (data (i32.const 6036) "1505") + (data (i32.const 6040) "1506") + (data (i32.const 6044) "1507") + (data (i32.const 6048) "1508") + (data (i32.const 6052) "1509") + (data (i32.const 6056) "1510") + (data (i32.const 6060) "1511") + (data (i32.const 6064) "1512") + (data (i32.const 6068) "1513") + (data (i32.const 6072) "1514") + (data (i32.const 6076) "1515") + (data (i32.const 6080) "1516") + (data (i32.const 6084) "1517") + (data (i32.const 6088) "1518") + (data (i32.const 6092) "1519") + (data (i32.const 6096) "1520") + (data (i32.const 6100) "1521") + (data (i32.const 6104) "1522") + (data (i32.const 6108) "1523") + (data (i32.const 6112) "1524") + (data (i32.const 6116) "1525") + (data (i32.const 6120) "1526") + (data (i32.const 6124) "1527") + (data (i32.const 6128) "1528") + (data (i32.const 6132) "1529") + (data (i32.const 6136) "1530") + (data (i32.const 6140) "1531") + (data (i32.const 6144) "1532") + (data (i32.const 6148) "1533") + (data (i32.const 6152) "1534") + (data (i32.const 6156) "1535") + (data (i32.const 6160) "1536") + (data (i32.const 6164) "1537") + (data (i32.const 6168) "1538") + (data (i32.const 6172) "1539") + (data (i32.const 6176) "1540") + (data (i32.const 6180) "1541") + (data (i32.const 6184) "1542") + (data (i32.const 6188) "1543") + (data (i32.const 6192) "1544") + (data (i32.const 6196) "1545") + (data (i32.const 6200) "1546") + (data (i32.const 6204) "1547") + (data (i32.const 6208) "1548") + (data (i32.const 6212) "1549") + (data (i32.const 6216) "1550") + (data (i32.const 6220) "1551") + (data (i32.const 6224) "1552") + (data (i32.const 6228) "1553") + (data (i32.const 6232) "1554") + (data (i32.const 6236) "1555") + (data (i32.const 6240) "1556") + (data (i32.const 6244) "1557") + (data (i32.const 6248) "1558") + (data (i32.const 6252) "1559") + (data (i32.const 6256) "1560") + (data (i32.const 6260) "1561") + (data (i32.const 6264) "1562") + (data (i32.const 6268) "1563") + (data (i32.const 6272) "1564") + (data (i32.const 6276) "1565") + (data (i32.const 6280) "1566") + (data (i32.const 6284) "1567") + (data (i32.const 6288) "1568") + (data (i32.const 6292) "1569") + (data (i32.const 6296) "1570") + (data (i32.const 6300) "1571") + (data (i32.const 6304) "1572") + (data (i32.const 6308) "1573") + (data (i32.const 6312) "1574") + (data (i32.const 6316) "1575") + (data (i32.const 6320) "1576") + (data (i32.const 6324) "1577") + (data (i32.const 6328) "1578") + (data (i32.const 6332) "1579") + (data (i32.const 6336) "1580") + (data (i32.const 6340) "1581") + (data (i32.const 6344) "1582") + (data (i32.const 6348) "1583") + (data (i32.const 6352) "1584") + (data (i32.const 6356) "1585") + (data (i32.const 6360) "1586") + (data (i32.const 6364) "1587") + (data (i32.const 6368) "1588") + (data (i32.const 6372) "1589") + (data (i32.const 6376) "1590") + (data (i32.const 6380) "1591") + (data (i32.const 6384) "1592") + (data (i32.const 6388) "1593") + (data (i32.const 6392) "1594") + (data (i32.const 6396) "1595") + (data (i32.const 6400) "1596") + (data (i32.const 6404) "1597") + (data (i32.const 6408) "1598") + (data (i32.const 6412) "1599") + (data (i32.const 6416) "1600") + (data (i32.const 6420) "1601") + (data (i32.const 6424) "1602") + (data (i32.const 6428) "1603") + (data (i32.const 6432) "1604") + (data (i32.const 6436) "1605") + (data (i32.const 6440) "1606") + (data (i32.const 6444) "1607") + (data (i32.const 6448) "1608") + (data (i32.const 6452) "1609") + (data (i32.const 6456) "1610") + (data (i32.const 6460) "1611") + (data (i32.const 6464) "1612") + (data (i32.const 6468) "1613") + (data (i32.const 6472) "1614") + (data (i32.const 6476) "1615") + (data (i32.const 6480) "1616") + (data (i32.const 6484) "1617") + (data (i32.const 6488) "1618") + (data (i32.const 6492) "1619") + (data (i32.const 6496) "1620") + (data (i32.const 6500) "1621") + (data (i32.const 6504) "1622") + (data (i32.const 6508) "1623") + (data (i32.const 6512) "1624") + (data (i32.const 6516) "1625") + (data (i32.const 6520) "1626") + (data (i32.const 6524) "1627") + (data (i32.const 6528) "1628") + (data (i32.const 6532) "1629") + (data (i32.const 6536) "1630") + (data (i32.const 6540) "1631") + (data (i32.const 6544) "1632") + (data (i32.const 6548) "1633") + (data (i32.const 6552) "1634") + (data (i32.const 6556) "1635") + (data (i32.const 6560) "1636") + (data (i32.const 6564) "1637") + (data (i32.const 6568) "1638") + (data (i32.const 6572) "1639") + (data (i32.const 6576) "1640") + (data (i32.const 6580) "1641") + (data (i32.const 6584) "1642") + (data (i32.const 6588) "1643") + (data (i32.const 6592) "1644") + (data (i32.const 6596) "1645") + (data (i32.const 6600) "1646") + (data (i32.const 6604) "1647") + (data (i32.const 6608) "1648") + (data (i32.const 6612) "1649") + (data (i32.const 6616) "1650") + (data (i32.const 6620) "1651") + (data (i32.const 6624) "1652") + (data (i32.const 6628) "1653") + (data (i32.const 6632) "1654") + (data (i32.const 6636) "1655") + (data (i32.const 6640) "1656") + (data (i32.const 6644) "1657") + (data (i32.const 6648) "1658") + (data (i32.const 6652) "1659") + (data (i32.const 6656) "1660") + (data (i32.const 6660) "1661") + (data (i32.const 6664) "1662") + (data (i32.const 6668) "1663") + (data (i32.const 6672) "1664") + (data (i32.const 6676) "1665") + (data (i32.const 6680) "1666") + (data (i32.const 6684) "1667") + (data (i32.const 6688) "1668") + (data (i32.const 6692) "1669") + (data (i32.const 6696) "1670") + (data (i32.const 6700) "1671") + (data (i32.const 6704) "1672") + (data (i32.const 6708) "1673") + (data (i32.const 6712) "1674") + (data (i32.const 6716) "1675") + (data (i32.const 6720) "1676") + (data (i32.const 6724) "1677") + (data (i32.const 6728) "1678") + (data (i32.const 6732) "1679") + (data (i32.const 6736) "1680") + (data (i32.const 6740) "1681") + (data (i32.const 6744) "1682") + (data (i32.const 6748) "1683") + (data (i32.const 6752) "1684") + (data (i32.const 6756) "1685") + (data (i32.const 6760) "1686") + (data (i32.const 6764) "1687") + (data (i32.const 6768) "1688") + (data (i32.const 6772) "1689") + (data (i32.const 6776) "1690") + (data (i32.const 6780) "1691") + (data (i32.const 6784) "1692") + (data (i32.const 6788) "1693") + (data (i32.const 6792) "1694") + (data (i32.const 6796) "1695") + (data (i32.const 6800) "1696") + (data (i32.const 6804) "1697") + (data (i32.const 6808) "1698") + (data (i32.const 6812) "1699") + (data (i32.const 6816) "1700") + (data (i32.const 6820) "1701") + (data (i32.const 6824) "1702") + (data (i32.const 6828) "1703") + (data (i32.const 6832) "1704") + (data (i32.const 6836) "1705") + (data (i32.const 6840) "1706") + (data (i32.const 6844) "1707") + (data (i32.const 6848) "1708") + (data (i32.const 6852) "1709") + (data (i32.const 6856) "1710") + (data (i32.const 6860) "1711") + (data (i32.const 6864) "1712") + (data (i32.const 6868) "1713") + (data (i32.const 6872) "1714") + (data (i32.const 6876) "1715") + (data (i32.const 6880) "1716") + (data (i32.const 6884) "1717") + (data (i32.const 6888) "1718") + (data (i32.const 6892) "1719") + (data (i32.const 6896) "1720") + (data (i32.const 6900) "1721") + (data (i32.const 6904) "1722") + (data (i32.const 6908) "1723") + (data (i32.const 6912) "1724") + (data (i32.const 6916) "1725") + (data (i32.const 6920) "1726") + (data (i32.const 6924) "1727") + (data (i32.const 6928) "1728") + (data (i32.const 6932) "1729") + (data (i32.const 6936) "1730") + (data (i32.const 6940) "1731") + (data (i32.const 6944) "1732") + (data (i32.const 6948) "1733") + (data (i32.const 6952) "1734") + (data (i32.const 6956) "1735") + (data (i32.const 6960) "1736") + (data (i32.const 6964) "1737") + (data (i32.const 6968) "1738") + (data (i32.const 6972) "1739") + (data (i32.const 6976) "1740") + (data (i32.const 6980) "1741") + (data (i32.const 6984) "1742") + (data (i32.const 6988) "1743") + (data (i32.const 6992) "1744") + (data (i32.const 6996) "1745") + (data (i32.const 7000) "1746") + (data (i32.const 7004) "1747") + (data (i32.const 7008) "1748") + (data (i32.const 7012) "1749") + (data (i32.const 7016) "1750") + (data (i32.const 7020) "1751") + (data (i32.const 7024) "1752") + (data (i32.const 7028) "1753") + (data (i32.const 7032) "1754") + (data (i32.const 7036) "1755") + (data (i32.const 7040) "1756") + (data (i32.const 7044) "1757") + (data (i32.const 7048) "1758") + (data (i32.const 7052) "1759") + (data (i32.const 7056) "1760") + (data (i32.const 7060) "1761") + (data (i32.const 7064) "1762") + (data (i32.const 7068) "1763") + (data (i32.const 7072) "1764") + (data (i32.const 7076) "1765") + (data (i32.const 7080) "1766") + (data (i32.const 7084) "1767") + (data (i32.const 7088) "1768") + (data (i32.const 7092) "1769") + (data (i32.const 7096) "1770") + (data (i32.const 7100) "1771") + (data (i32.const 7104) "1772") + (data (i32.const 7108) "1773") + (data (i32.const 7112) "1774") + (data (i32.const 7116) "1775") + (data (i32.const 7120) "1776") + (data (i32.const 7124) "1777") + (data (i32.const 7128) "1778") + (data (i32.const 7132) "1779") + (data (i32.const 7136) "1780") + (data (i32.const 7140) "1781") + (data (i32.const 7144) "1782") + (data (i32.const 7148) "1783") + (data (i32.const 7152) "1784") + (data (i32.const 7156) "1785") + (data (i32.const 7160) "1786") + (data (i32.const 7164) "1787") + (data (i32.const 7168) "1788") + (data (i32.const 7172) "1789") + (data (i32.const 7176) "1790") + (data (i32.const 7180) "1791") + (data (i32.const 7184) "1792") + (data (i32.const 7188) "1793") + (data (i32.const 7192) "1794") + (data (i32.const 7196) "1795") + (data (i32.const 7200) "1796") + (data (i32.const 7204) "1797") + (data (i32.const 7208) "1798") + (data (i32.const 7212) "1799") + (data (i32.const 7216) "1800") + (data (i32.const 7220) "1801") + (data (i32.const 7224) "1802") + (data (i32.const 7228) "1803") + (data (i32.const 7232) "1804") + (data (i32.const 7236) "1805") + (data (i32.const 7240) "1806") + (data (i32.const 7244) "1807") + (data (i32.const 7248) "1808") + (data (i32.const 7252) "1809") + (data (i32.const 7256) "1810") + (data (i32.const 7260) "1811") + (data (i32.const 7264) "1812") + (data (i32.const 7268) "1813") + (data (i32.const 7272) "1814") + (data (i32.const 7276) "1815") + (data (i32.const 7280) "1816") + (data (i32.const 7284) "1817") + (data (i32.const 7288) "1818") + (data (i32.const 7292) "1819") + (data (i32.const 7296) "1820") + (data (i32.const 7300) "1821") + (data (i32.const 7304) "1822") + (data (i32.const 7308) "1823") + (data (i32.const 7312) "1824") + (data (i32.const 7316) "1825") + (data (i32.const 7320) "1826") + (data (i32.const 7324) "1827") + (data (i32.const 7328) "1828") + (data (i32.const 7332) "1829") + (data (i32.const 7336) "1830") + (data (i32.const 7340) "1831") + (data (i32.const 7344) "1832") + (data (i32.const 7348) "1833") + (data (i32.const 7352) "1834") + (data (i32.const 7356) "1835") + (data (i32.const 7360) "1836") + (data (i32.const 7364) "1837") + (data (i32.const 7368) "1838") + (data (i32.const 7372) "1839") + (data (i32.const 7376) "1840") + (data (i32.const 7380) "1841") + (data (i32.const 7384) "1842") + (data (i32.const 7388) "1843") + (data (i32.const 7392) "1844") + (data (i32.const 7396) "1845") + (data (i32.const 7400) "1846") + (data (i32.const 7404) "1847") + (data (i32.const 7408) "1848") + (data (i32.const 7412) "1849") + (data (i32.const 7416) "1850") + (data (i32.const 7420) "1851") + (data (i32.const 7424) "1852") + (data (i32.const 7428) "1853") + (data (i32.const 7432) "1854") + (data (i32.const 7436) "1855") + (data (i32.const 7440) "1856") + (data (i32.const 7444) "1857") + (data (i32.const 7448) "1858") + (data (i32.const 7452) "1859") + (data (i32.const 7456) "1860") + (data (i32.const 7460) "1861") + (data (i32.const 7464) "1862") + (data (i32.const 7468) "1863") + (data (i32.const 7472) "1864") + (data (i32.const 7476) "1865") + (data (i32.const 7480) "1866") + (data (i32.const 7484) "1867") + (data (i32.const 7488) "1868") + (data (i32.const 7492) "1869") + (data (i32.const 7496) "1870") + (data (i32.const 7500) "1871") + (data (i32.const 7504) "1872") + (data (i32.const 7508) "1873") + (data (i32.const 7512) "1874") + (data (i32.const 7516) "1875") + (data (i32.const 7520) "1876") + (data (i32.const 7524) "1877") + (data (i32.const 7528) "1878") + (data (i32.const 7532) "1879") + (data (i32.const 7536) "1880") + (data (i32.const 7540) "1881") + (data (i32.const 7544) "1882") + (data (i32.const 7548) "1883") + (data (i32.const 7552) "1884") + (data (i32.const 7556) "1885") + (data (i32.const 7560) "1886") + (data (i32.const 7564) "1887") + (data (i32.const 7568) "1888") + (data (i32.const 7572) "1889") + (data (i32.const 7576) "1890") + (data (i32.const 7580) "1891") + (data (i32.const 7584) "1892") + (data (i32.const 7588) "1893") + (data (i32.const 7592) "1894") + (data (i32.const 7596) "1895") + (data (i32.const 7600) "1896") + (data (i32.const 7604) "1897") + (data (i32.const 7608) "1898") + (data (i32.const 7612) "1899") + (data (i32.const 7616) "1900") + (data (i32.const 7620) "1901") + (data (i32.const 7624) "1902") + (data (i32.const 7628) "1903") + (data (i32.const 7632) "1904") + (data (i32.const 7636) "1905") + (data (i32.const 7640) "1906") + (data (i32.const 7644) "1907") + (data (i32.const 7648) "1908") + (data (i32.const 7652) "1909") + (data (i32.const 7656) "1910") + (data (i32.const 7660) "1911") + (data (i32.const 7664) "1912") + (data (i32.const 7668) "1913") + (data (i32.const 7672) "1914") + (data (i32.const 7676) "1915") + (data (i32.const 7680) "1916") + (data (i32.const 7684) "1917") + (data (i32.const 7688) "1918") + (data (i32.const 7692) "1919") + (data (i32.const 7696) "1920") + (data (i32.const 7700) "1921") + (data (i32.const 7704) "1922") + (data (i32.const 7708) "1923") + (data (i32.const 7712) "1924") + (data (i32.const 7716) "1925") + (data (i32.const 7720) "1926") + (data (i32.const 7724) "1927") + (data (i32.const 7728) "1928") + (data (i32.const 7732) "1929") + (data (i32.const 7736) "1930") + (data (i32.const 7740) "1931") + (data (i32.const 7744) "1932") + (data (i32.const 7748) "1933") + (data (i32.const 7752) "1934") + (data (i32.const 7756) "1935") + (data (i32.const 7760) "1936") + (data (i32.const 7764) "1937") + (data (i32.const 7768) "1938") + (data (i32.const 7772) "1939") + (data (i32.const 7776) "1940") + (data (i32.const 7780) "1941") + (data (i32.const 7784) "1942") + (data (i32.const 7788) "1943") + (data (i32.const 7792) "1944") + (data (i32.const 7796) "1945") + (data (i32.const 7800) "1946") + (data (i32.const 7804) "1947") + (data (i32.const 7808) "1948") + (data (i32.const 7812) "1949") + (data (i32.const 7816) "1950") + (data (i32.const 7820) "1951") + (data (i32.const 7824) "1952") + (data (i32.const 7828) "1953") + (data (i32.const 7832) "1954") + (data (i32.const 7836) "1955") + (data (i32.const 7840) "1956") + (data (i32.const 7844) "1957") + (data (i32.const 7848) "1958") + (data (i32.const 7852) "1959") + (data (i32.const 7856) "1960") + (data (i32.const 7860) "1961") + (data (i32.const 7864) "1962") + (data (i32.const 7868) "1963") + (data (i32.const 7872) "1964") + (data (i32.const 7876) "1965") + (data (i32.const 7880) "1966") + (data (i32.const 7884) "1967") + (data (i32.const 7888) "1968") + (data (i32.const 7892) "1969") + (data (i32.const 7896) "1970") + (data (i32.const 7900) "1971") + (data (i32.const 7904) "1972") + (data (i32.const 7908) "1973") + (data (i32.const 7912) "1974") + (data (i32.const 7916) "1975") + (data (i32.const 7920) "1976") + (data (i32.const 7924) "1977") + (data (i32.const 7928) "1978") + (data (i32.const 7932) "1979") + (data (i32.const 7936) "1980") + (data (i32.const 7940) "1981") + (data (i32.const 7944) "1982") + (data (i32.const 7948) "1983") + (data (i32.const 7952) "1984") + (data (i32.const 7956) "1985") + (data (i32.const 7960) "1986") + (data (i32.const 7964) "1987") + (data (i32.const 7968) "1988") + (data (i32.const 7972) "1989") + (data (i32.const 7976) "1990") + (data (i32.const 7980) "1991") + (data (i32.const 7984) "1992") + (data (i32.const 7988) "1993") + (data (i32.const 7992) "1994") + (data (i32.const 7996) "1995") + (data (i32.const 8000) "1996") + (data (i32.const 8004) "1997") + (data (i32.const 8008) "1998") + (data (i32.const 8012) "1999") + (data (i32.const 8016) "2000") + (data (i32.const 8020) "2001") + (data (i32.const 8024) "2002") + (data (i32.const 8028) "2003") + (data (i32.const 8032) "2004") + (data (i32.const 8036) "2005") + (data (i32.const 8040) "2006") + (data (i32.const 8044) "2007") + (data (i32.const 8048) "2008") + (data (i32.const 8052) "2009") + (data (i32.const 8056) "2010") + (data (i32.const 8060) "2011") + (data (i32.const 8064) "2012") + (data (i32.const 8068) "2013") + (data (i32.const 8072) "2014") + (data (i32.const 8076) "2015") + (data (i32.const 8080) "2016") + (data (i32.const 8084) "2017") + (data (i32.const 8088) "2018") + (data (i32.const 8092) "2019") + (data (i32.const 8096) "2020") + (data (i32.const 8100) "2021") + (data (i32.const 8104) "2022") + (data (i32.const 8108) "2023") + (data (i32.const 8112) "2024") + (data (i32.const 8116) "2025") + (data (i32.const 8120) "2026") + (data (i32.const 8124) "2027") + (data (i32.const 8128) "2028") + (data (i32.const 8132) "2029") + (data (i32.const 8136) "2030") + (data (i32.const 8140) "2031") + (data (i32.const 8144) "2032") + (data (i32.const 8148) "2033") + (data (i32.const 8152) "2034") + (data (i32.const 8156) "2035") + (data (i32.const 8160) "2036") + (data (i32.const 8164) "2037") + (data (i32.const 8168) "2038") + (data (i32.const 8172) "2039") + (data (i32.const 8176) "2040") + (data (i32.const 8180) "2041") + (data (i32.const 8184) "2042") + (data (i32.const 8188) "2043") + (data (i32.const 8192) "2044") + (data (i32.const 8196) "2045") + (data (i32.const 8200) "2046") + (data (i32.const 8204) "2047") + (data (i32.const 8208) "2048") + (data (i32.const 8212) "2049") + (data (i32.const 8216) "2050") + (data (i32.const 8220) "2051") + (data (i32.const 8224) "2052") + (data (i32.const 8228) "2053") + (data (i32.const 8232) "2054") + (data (i32.const 8236) "2055") + (data (i32.const 8240) "2056") + (data (i32.const 8244) "2057") + (data (i32.const 8248) "2058") + (data (i32.const 8252) "2059") + (data (i32.const 8256) "2060") + (data (i32.const 8260) "2061") + (data (i32.const 8264) "2062") + (data (i32.const 8268) "2063") + (data (i32.const 8272) "2064") + (data (i32.const 8276) "2065") + (data (i32.const 8280) "2066") + (data (i32.const 8284) "2067") + (data (i32.const 8288) "2068") + (data (i32.const 8292) "2069") + (data (i32.const 8296) "2070") + (data (i32.const 8300) "2071") + (data (i32.const 8304) "2072") + (data (i32.const 8308) "2073") + (data (i32.const 8312) "2074") + (data (i32.const 8316) "2075") + (data (i32.const 8320) "2076") + (data (i32.const 8324) "2077") + (data (i32.const 8328) "2078") + (data (i32.const 8332) "2079") + (data (i32.const 8336) "2080") + (data (i32.const 8340) "2081") + (data (i32.const 8344) "2082") + (data (i32.const 8348) "2083") + (data (i32.const 8352) "2084") + (data (i32.const 8356) "2085") + (data (i32.const 8360) "2086") + (data (i32.const 8364) "2087") + (data (i32.const 8368) "2088") + (data (i32.const 8372) "2089") + (data (i32.const 8376) "2090") + (data (i32.const 8380) "2091") + (data (i32.const 8384) "2092") + (data (i32.const 8388) "2093") + (data (i32.const 8392) "2094") + (data (i32.const 8396) "2095") + (data (i32.const 8400) "2096") + (data (i32.const 8404) "2097") + (data (i32.const 8408) "2098") + (data (i32.const 8412) "2099") + (data (i32.const 8416) "2100") + (data (i32.const 8420) "2101") + (data (i32.const 8424) "2102") + (data (i32.const 8428) "2103") + (data (i32.const 8432) "2104") + (data (i32.const 8436) "2105") + (data (i32.const 8440) "2106") + (data (i32.const 8444) "2107") + (data (i32.const 8448) "2108") + (data (i32.const 8452) "2109") + (data (i32.const 8456) "2110") + (data (i32.const 8460) "2111") + (data (i32.const 8464) "2112") + (data (i32.const 8468) "2113") + (data (i32.const 8472) "2114") + (data (i32.const 8476) "2115") + (data (i32.const 8480) "2116") + (data (i32.const 8484) "2117") + (data (i32.const 8488) "2118") + (data (i32.const 8492) "2119") + (data (i32.const 8496) "2120") + (data (i32.const 8500) "2121") + (data (i32.const 8504) "2122") + (data (i32.const 8508) "2123") + (data (i32.const 8512) "2124") + (data (i32.const 8516) "2125") + (data (i32.const 8520) "2126") + (data (i32.const 8524) "2127") + (data (i32.const 8528) "2128") + (data (i32.const 8532) "2129") + (data (i32.const 8536) "2130") + (data (i32.const 8540) "2131") + (data (i32.const 8544) "2132") + (data (i32.const 8548) "2133") + (data (i32.const 8552) "2134") + (data (i32.const 8556) "2135") + (data (i32.const 8560) "2136") + (data (i32.const 8564) "2137") + (data (i32.const 8568) "2138") + (data (i32.const 8572) "2139") + (data (i32.const 8576) "2140") + (data (i32.const 8580) "2141") + (data (i32.const 8584) "2142") + (data (i32.const 8588) "2143") + (data (i32.const 8592) "2144") + (data (i32.const 8596) "2145") + (data (i32.const 8600) "2146") + (data (i32.const 8604) "2147") + (data (i32.const 8608) "2148") + (data (i32.const 8612) "2149") + (data (i32.const 8616) "2150") + (data (i32.const 8620) "2151") + (data (i32.const 8624) "2152") + (data (i32.const 8628) "2153") + (data (i32.const 8632) "2154") + (data (i32.const 8636) "2155") + (data (i32.const 8640) "2156") + (data (i32.const 8644) "2157") + (data (i32.const 8648) "2158") + (data (i32.const 8652) "2159") + (data (i32.const 8656) "2160") + (data (i32.const 8660) "2161") + (data (i32.const 8664) "2162") + (data (i32.const 8668) "2163") + (data (i32.const 8672) "2164") + (data (i32.const 8676) "2165") + (data (i32.const 8680) "2166") + (data (i32.const 8684) "2167") + (data (i32.const 8688) "2168") + (data (i32.const 8692) "2169") + (data (i32.const 8696) "2170") + (data (i32.const 8700) "2171") + (data (i32.const 8704) "2172") + (data (i32.const 8708) "2173") + (data (i32.const 8712) "2174") + (data (i32.const 8716) "2175") + (data (i32.const 8720) "2176") + (data (i32.const 8724) "2177") + (data (i32.const 8728) "2178") + (data (i32.const 8732) "2179") + (data (i32.const 8736) "2180") + (data (i32.const 8740) "2181") + (data (i32.const 8744) "2182") + (data (i32.const 8748) "2183") + (data (i32.const 8752) "2184") + (data (i32.const 8756) "2185") + (data (i32.const 8760) "2186") + (data (i32.const 8764) "2187") + (data (i32.const 8768) "2188") + (data (i32.const 8772) "2189") + (data (i32.const 8776) "2190") + (data (i32.const 8780) "2191") + (data (i32.const 8784) "2192") + (data (i32.const 8788) "2193") + (data (i32.const 8792) "2194") + (data (i32.const 8796) "2195") + (data (i32.const 8800) "2196") + (data (i32.const 8804) "2197") + (data (i32.const 8808) "2198") + (data (i32.const 8812) "2199") + (data (i32.const 8816) "2200") + (data (i32.const 8820) "2201") + (data (i32.const 8824) "2202") + (data (i32.const 8828) "2203") + (data (i32.const 8832) "2204") + (data (i32.const 8836) "2205") + (data (i32.const 8840) "2206") + (data (i32.const 8844) "2207") + (data (i32.const 8848) "2208") + (data (i32.const 8852) "2209") + (data (i32.const 8856) "2210") + (data (i32.const 8860) "2211") + (data (i32.const 8864) "2212") + (data (i32.const 8868) "2213") + (data (i32.const 8872) "2214") + (data (i32.const 8876) "2215") + (data (i32.const 8880) "2216") + (data (i32.const 8884) "2217") + (data (i32.const 8888) "2218") + (data (i32.const 8892) "2219") + (data (i32.const 8896) "2220") + (data (i32.const 8900) "2221") + (data (i32.const 8904) "2222") + (data (i32.const 8908) "2223") + (data (i32.const 8912) "2224") + (data (i32.const 8916) "2225") + (data (i32.const 8920) "2226") + (data (i32.const 8924) "2227") + (data (i32.const 8928) "2228") + (data (i32.const 8932) "2229") + (data (i32.const 8936) "2230") + (data (i32.const 8940) "2231") + (data (i32.const 8944) "2232") + (data (i32.const 8948) "2233") + (data (i32.const 8952) "2234") + (data (i32.const 8956) "2235") + (data (i32.const 8960) "2236") + (data (i32.const 8964) "2237") + (data (i32.const 8968) "2238") + (data (i32.const 8972) "2239") + (data (i32.const 8976) "2240") + (data (i32.const 8980) "2241") + (data (i32.const 8984) "2242") + (data (i32.const 8988) "2243") + (data (i32.const 8992) "2244") + (data (i32.const 8996) "2245") + (data (i32.const 9000) "2246") + (data (i32.const 9004) "2247") + (data (i32.const 9008) "2248") + (data (i32.const 9012) "2249") + (data (i32.const 9016) "2250") + (data (i32.const 9020) "2251") + (data (i32.const 9024) "2252") + (data (i32.const 9028) "2253") + (data (i32.const 9032) "2254") + (data (i32.const 9036) "2255") + (data (i32.const 9040) "2256") + (data (i32.const 9044) "2257") + (data (i32.const 9048) "2258") + (data (i32.const 9052) "2259") + (data (i32.const 9056) "2260") + (data (i32.const 9060) "2261") + (data (i32.const 9064) "2262") + (data (i32.const 9068) "2263") + (data (i32.const 9072) "2264") + (data (i32.const 9076) "2265") + (data (i32.const 9080) "2266") + (data (i32.const 9084) "2267") + (data (i32.const 9088) "2268") + (data (i32.const 9092) "2269") + (data (i32.const 9096) "2270") + (data (i32.const 9100) "2271") + (data (i32.const 9104) "2272") + (data (i32.const 9108) "2273") + (data (i32.const 9112) "2274") + (data (i32.const 9116) "2275") + (data (i32.const 9120) "2276") + (data (i32.const 9124) "2277") + (data (i32.const 9128) "2278") + (data (i32.const 9132) "2279") + (data (i32.const 9136) "2280") + (data (i32.const 9140) "2281") + (data (i32.const 9144) "2282") + (data (i32.const 9148) "2283") + (data (i32.const 9152) "2284") + (data (i32.const 9156) "2285") + (data (i32.const 9160) "2286") + (data (i32.const 9164) "2287") + (data (i32.const 9168) "2288") + (data (i32.const 9172) "2289") + (data (i32.const 9176) "2290") + (data (i32.const 9180) "2291") + (data (i32.const 9184) "2292") + (data (i32.const 9188) "2293") + (data (i32.const 9192) "2294") + (data (i32.const 9196) "2295") + (data (i32.const 9200) "2296") + (data (i32.const 9204) "2297") + (data (i32.const 9208) "2298") + (data (i32.const 9212) "2299") + (data (i32.const 9216) "2300") + (data (i32.const 9220) "2301") + (data (i32.const 9224) "2302") + (data (i32.const 9228) "2303") + (data (i32.const 9232) "2304") + (data (i32.const 9236) "2305") + (data (i32.const 9240) "2306") + (data (i32.const 9244) "2307") + (data (i32.const 9248) "2308") + (data (i32.const 9252) "2309") + (data (i32.const 9256) "2310") + (data (i32.const 9260) "2311") + (data (i32.const 9264) "2312") + (data (i32.const 9268) "2313") + (data (i32.const 9272) "2314") + (data (i32.const 9276) "2315") + (data (i32.const 9280) "2316") + (data (i32.const 9284) "2317") + (data (i32.const 9288) "2318") + (data (i32.const 9292) "2319") + (data (i32.const 9296) "2320") + (data (i32.const 9300) "2321") + (data (i32.const 9304) "2322") + (data (i32.const 9308) "2323") + (data (i32.const 9312) "2324") + (data (i32.const 9316) "2325") + (data (i32.const 9320) "2326") + (data (i32.const 9324) "2327") + (data (i32.const 9328) "2328") + (data (i32.const 9332) "2329") + (data (i32.const 9336) "2330") + (data (i32.const 9340) "2331") + (data (i32.const 9344) "2332") + (data (i32.const 9348) "2333") + (data (i32.const 9352) "2334") + (data (i32.const 9356) "2335") + (data (i32.const 9360) "2336") + (data (i32.const 9364) "2337") + (data (i32.const 9368) "2338") + (data (i32.const 9372) "2339") + (data (i32.const 9376) "2340") + (data (i32.const 9380) "2341") + (data (i32.const 9384) "2342") + (data (i32.const 9388) "2343") + (data (i32.const 9392) "2344") + (data (i32.const 9396) "2345") + (data (i32.const 9400) "2346") + (data (i32.const 9404) "2347") + (data (i32.const 9408) "2348") + (data (i32.const 9412) "2349") + (data (i32.const 9416) "2350") + (data (i32.const 9420) "2351") + (data (i32.const 9424) "2352") + (data (i32.const 9428) "2353") + (data (i32.const 9432) "2354") + (data (i32.const 9436) "2355") + (data (i32.const 9440) "2356") + (data (i32.const 9444) "2357") + (data (i32.const 9448) "2358") + (data (i32.const 9452) "2359") + (data (i32.const 9456) "2360") + (data (i32.const 9460) "2361") + (data (i32.const 9464) "2362") + (data (i32.const 9468) "2363") + (data (i32.const 9472) "2364") + (data (i32.const 9476) "2365") + (data (i32.const 9480) "2366") + (data (i32.const 9484) "2367") + (data (i32.const 9488) "2368") + (data (i32.const 9492) "2369") + (data (i32.const 9496) "2370") + (data (i32.const 9500) "2371") + (data (i32.const 9504) "2372") + (data (i32.const 9508) "2373") + (data (i32.const 9512) "2374") + (data (i32.const 9516) "2375") + (data (i32.const 9520) "2376") + (data (i32.const 9524) "2377") + (data (i32.const 9528) "2378") + (data (i32.const 9532) "2379") + (data (i32.const 9536) "2380") + (data (i32.const 9540) "2381") + (data (i32.const 9544) "2382") + (data (i32.const 9548) "2383") + (data (i32.const 9552) "2384") + (data (i32.const 9556) "2385") + (data (i32.const 9560) "2386") + (data (i32.const 9564) "2387") + (data (i32.const 9568) "2388") + (data (i32.const 9572) "2389") + (data (i32.const 9576) "2390") + (data (i32.const 9580) "2391") + (data (i32.const 9584) "2392") + (data (i32.const 9588) "2393") + (data (i32.const 9592) "2394") + (data (i32.const 9596) "2395") + (data (i32.const 9600) "2396") + (data (i32.const 9604) "2397") + (data (i32.const 9608) "2398") + (data (i32.const 9612) "2399") + (data (i32.const 9616) "2400") + (export "eq" (func $eq)) + (export "ne" (func $ne)) + (export "gt" (func $gt)) + (export "lt" (func $lt)) + (export "ge" (func $ge)) + (export "le" (func $le)) + (export "apply" (func $apply)) + (export "assert_return" (func $assert_return)) + (func $assert_return (param $0 i32) (param $1 i32 ) (param $2 i32) (call $eosio_assert(i32.eq (get_local $0) (get_local $1)) (get_local $2))) + (func $eq (param $0 f64) (param $1 f64) (result i32) (f64.eq (get_local $0) (get_local $1))) + (func $ne (param $0 f64) (param $1 f64) (result i32) (f64.ne (get_local $0) (get_local $1))) + (func $gt (param $0 f64) (param $1 f64) (result i32) (f64.gt (get_local $0) (get_local $1))) + (func $lt (param $0 f64) (param $1 f64) (result i32) (f64.lt (get_local $0) (get_local $1))) + (func $ge (param $0 f64) (param $1 f64) (result i32) (f64.ge (get_local $0) (get_local $1))) + (func $le (param $0 f64) (param $1 f64) (result i32) (f64.le (get_local $0) (get_local $1))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 20)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 24)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 28)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 32)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 36)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 40)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 44)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 48)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 52)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 56)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 60)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 64)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 68)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 72)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 76)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 80)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 84)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 88)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 92)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 96)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 100)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 104)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 108)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 112)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 116)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 120)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 124)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 128)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -inf)) (i32.const 0) (i32.const 132)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const inf)) (i32.const 0) (i32.const 136)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -inf)) (i32.const 0) (i32.const 140)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const inf)) (i32.const 0) (i32.const 144)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 148)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 152)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 156)) + (call $assert_return (call $eq (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 160)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 164)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 168)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 172)) + (call $assert_return (call $eq (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 176)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 180)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 184)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 188)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 192)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 196)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 200)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 204)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 208)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 212)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 216)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 220)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 224)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 228)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 232)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 236)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 240)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 244)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 248)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 252)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 256)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 260)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 264)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 268)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 272)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 276)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 280)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 284)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 288)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0) (i32.const 292)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0) (i32.const 296)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0) (i32.const 300)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0) (i32.const 304)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 308)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 312)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 316)) + (call $assert_return (call $eq (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 320)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 324)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 328)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 332)) + (call $assert_return (call $eq (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 336)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 340)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 344)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 348)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 352)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 356)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 360)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 364)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 368)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 372)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 376)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 380)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 384)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 388)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 392)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 396)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 400)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 404)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 408)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 412)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 416)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 420)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 424)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 428)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 432)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 436)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 440)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 444)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 448)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 0) (i32.const 452)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const inf)) (i32.const 0) (i32.const 456)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 0) (i32.const 460)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const inf)) (i32.const 0) (i32.const 464)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 468)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 472)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 476)) + (call $assert_return (call $eq (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 480)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 484)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 488)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 492)) + (call $assert_return (call $eq (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 496)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0) (i32.const 500)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0) (i32.const 504)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0) (i32.const 508)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0) (i32.const 512)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 516)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 520)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 524)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 528)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 532)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 536)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 540)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 544)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1) (i32.const 548)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0) (i32.const 552)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0) (i32.const 556)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1) (i32.const 560)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0) (i32.const 564)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0) (i32.const 568)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0) (i32.const 572)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0) (i32.const 576)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 580)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 584)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 588)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 592)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 596)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 600)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 604)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 608)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -inf)) (i32.const 0) (i32.const 612)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const inf)) (i32.const 0) (i32.const 616)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -inf)) (i32.const 0) (i32.const 620)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const inf)) (i32.const 0) (i32.const 624)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 628)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 632)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 636)) + (call $assert_return (call $eq (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 640)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 644)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 648)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 652)) + (call $assert_return (call $eq (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 656)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 660)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 664)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 668)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 672)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 676)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 680)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 684)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 688)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 692)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 696)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 700)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 704)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 708)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 712)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 716)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 720)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 724)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 728)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 732)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 736)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 740)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 744)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 748)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 752)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 756)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 760)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 764)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 768)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -inf)) (i32.const 0) (i32.const 772)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const inf)) (i32.const 0) (i32.const 776)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -inf)) (i32.const 0) (i32.const 780)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const inf)) (i32.const 0) (i32.const 784)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 788)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 792)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 796)) + (call $assert_return (call $eq (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 800)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 804)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 808)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 812)) + (call $assert_return (call $eq (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 816)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0) (i32.const 820)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0) (i32.const 824)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0) (i32.const 828)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0) (i32.const 832)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 836)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 840)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 844)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 848)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 852)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 856)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 860)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 864)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0) (i32.const 868)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0) (i32.const 872)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0) (i32.const 876)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0) (i32.const 880)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0) (i32.const 884)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0) (i32.const 888)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0) (i32.const 892)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0) (i32.const 896)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 900)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 904)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 908)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 912)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 916)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 920)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 924)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 928)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0) (i32.const 932)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0) (i32.const 936)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0) (i32.const 940)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0) (i32.const 944)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 948)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 952)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 956)) + (call $assert_return (call $eq (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 960)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 964)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 968)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 972)) + (call $assert_return (call $eq (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 976)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0) (i32.const 980)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0) (i32.const 984)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0) (i32.const 988)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0) (i32.const 992)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 996)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1000)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1004)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1008)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1012)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1016)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1020)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1024)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1028)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1032)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1036)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1040)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1044)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1048)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1052)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1056)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1060)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1064)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1068)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1072)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1076)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1080)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1084)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1088)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0) (i32.const 1092)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0) (i32.const 1096)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0) (i32.const 1100)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0) (i32.const 1104)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 1108)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1112)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 1116)) + (call $assert_return (call $eq (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1120)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 1124)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1128)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 1132)) + (call $assert_return (call $eq (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1136)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1140)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1144)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1148)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1152)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1156)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1160)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1164)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1168)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1172)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1176)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1180)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1184)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1188)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1192)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1196)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1200)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1204)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1208)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1212)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1216)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1220)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1224)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1228)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1232)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1236)) + (call $assert_return (call $eq (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1240)) + (call $assert_return (call $eq (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1244)) + (call $assert_return (call $eq (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1248)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -inf)) (i32.const 1) (i32.const 1252)) + (call $assert_return (call $eq (f64.const -inf) (f64.const inf)) (i32.const 0) (i32.const 1256)) + (call $assert_return (call $eq (f64.const inf) (f64.const -inf)) (i32.const 0) (i32.const 1260)) + (call $assert_return (call $eq (f64.const inf) (f64.const inf)) (i32.const 1) (i32.const 1264)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -nan)) (i32.const 0) (i32.const 1268)) + (call $assert_return (call $eq (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1272)) + (call $assert_return (call $eq (f64.const -inf) (f64.const nan)) (i32.const 0) (i32.const 1276)) + (call $assert_return (call $eq (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1280)) + (call $assert_return (call $eq (f64.const inf) (f64.const -nan)) (i32.const 0) (i32.const 1284)) + (call $assert_return (call $eq (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1288)) + (call $assert_return (call $eq (f64.const inf) (f64.const nan)) (i32.const 0) (i32.const 1292)) + (call $assert_return (call $eq (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1296)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1300)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1304)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1308)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1312)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1316)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1320)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1324)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1328)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1332)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1336)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1340)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1344)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1348)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1352)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1356)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1360)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1364)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1368)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1372)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1376)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1380)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1384)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1388)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1392)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1396)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1400)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1404)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1408)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1412)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 1416)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1420)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 1424)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1428)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1432)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1436)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1440)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1444)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 1448)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1452)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 1456)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1460)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1464)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1468)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1472)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1476)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1480)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1484)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 1488)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1492)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1496)) + (call $assert_return (call $eq (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1500)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1504)) + (call $assert_return (call $eq (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1508)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1512)) + (call $assert_return (call $eq (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1516)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 1520)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -inf)) (i32.const 0) (i32.const 1524)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 1528)) + (call $assert_return (call $eq (f64.const -nan) (f64.const inf)) (i32.const 0) (i32.const 1532)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 1536)) + (call $assert_return (call $eq (f64.const nan) (f64.const -inf)) (i32.const 0) (i32.const 1540)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 1544)) + (call $assert_return (call $eq (f64.const nan) (f64.const inf)) (i32.const 0) (i32.const 1548)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 1552)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -nan)) (i32.const 0) (i32.const 1556)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 1560)) + (call $assert_return (call $eq (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1564)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1568)) + (call $assert_return (call $eq (f64.const -nan) (f64.const nan)) (i32.const 0) (i32.const 1572)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 1576)) + (call $assert_return (call $eq (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1580)) + (call $assert_return (call $eq (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1584)) + (call $assert_return (call $eq (f64.const nan) (f64.const -nan)) (i32.const 0) (i32.const 1588)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 1592)) + (call $assert_return (call $eq (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1596)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 1600)) + (call $assert_return (call $eq (f64.const nan) (f64.const nan)) (i32.const 0) (i32.const 1604)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 1608)) + (call $assert_return (call $eq (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1612)) + (call $assert_return (call $eq (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 1616)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1620)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1624)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 1628)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 1632)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1636)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1640)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1644)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1648)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 1652)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 1656)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 1660)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 1664)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 1668)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 1672)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 1676)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 1680)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 1684)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 1688)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 1692)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 1696)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1700)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1704)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1708)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1712)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1716)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1720)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1724)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1728)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -inf)) (i32.const 1) (i32.const 1732)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const inf)) (i32.const 1) (i32.const 1736)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -inf)) (i32.const 1) (i32.const 1740)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const inf)) (i32.const 1) (i32.const 1744)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -nan)) (i32.const 1) (i32.const 1748)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 1752)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const nan)) (i32.const 1) (i32.const 1756)) + (call $assert_return (call $ne (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 1760)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -nan)) (i32.const 1) (i32.const 1764)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 1768)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const nan)) (i32.const 1) (i32.const 1772)) + (call $assert_return (call $ne (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 1776)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 1780)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 1784)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 1788)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 1792)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1796)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1800)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1804)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 1808)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 1812)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 1816)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 1820)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 1824)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 1828)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 1832)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 1836)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 1840)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 1844)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 1848)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 1852)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 1856)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1860)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1864)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1868)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 1872)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1876)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1880)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1884)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 1888)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1) (i32.const 1892)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1) (i32.const 1896)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1) (i32.const 1900)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1) (i32.const 1904)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1) (i32.const 1908)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 1912)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1) (i32.const 1916)) + (call $assert_return (call $ne (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 1920)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1) (i32.const 1924)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 1928)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1) (i32.const 1932)) + (call $assert_return (call $ne (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 1936)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 1940)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 1944)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 1948)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 1952)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1956)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1960)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1964)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 1968)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 1972)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 1976)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 1980)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 1984)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 1988)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 1992)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 1996)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2000)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2004)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2008)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2012)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2016)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2020)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2024)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2028)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2032)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2036)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2040)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2044)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2048)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 1) (i32.const 2052)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const inf)) (i32.const 1) (i32.const 2056)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 1) (i32.const 2060)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const inf)) (i32.const 1) (i32.const 2064)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 1) (i32.const 2068)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2072)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const nan)) (i32.const 1) (i32.const 2076)) + (call $assert_return (call $ne (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2080)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 1) (i32.const 2084)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2088)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const nan)) (i32.const 1) (i32.const 2092)) + (call $assert_return (call $ne (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2096)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2100)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2104)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2108)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2112)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2116)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2120)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2124)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2128)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2132)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2136)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2140)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2144)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0) (i32.const 2148)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2152)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2156)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0) (i32.const 2160)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2164)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2168)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2172)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2176)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2180)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2184)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2188)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2192)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2196)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2200)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2204)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2208)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -inf)) (i32.const 1) (i32.const 2212)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const inf)) (i32.const 1) (i32.const 2216)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -inf)) (i32.const 1) (i32.const 2220)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const inf)) (i32.const 1) (i32.const 2224)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -nan)) (i32.const 1) (i32.const 2228)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2232)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const nan)) (i32.const 1) (i32.const 2236)) + (call $assert_return (call $ne (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2240)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -nan)) (i32.const 1) (i32.const 2244)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2248)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const nan)) (i32.const 1) (i32.const 2252)) + (call $assert_return (call $ne (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2256)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2260)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2264)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2268)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2272)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2276)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2280)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2284)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2288)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2292)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2296)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2300)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2304)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2308)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2312)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2316)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2320)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 2324)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2328)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2332)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 2336)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2340)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2344)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2348)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2352)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2356)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2360)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2364)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2368)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -inf)) (i32.const 1) (i32.const 2372)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const inf)) (i32.const 1) (i32.const 2376)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -inf)) (i32.const 1) (i32.const 2380)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const inf)) (i32.const 1) (i32.const 2384)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -nan)) (i32.const 1) (i32.const 2388)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2392)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const nan)) (i32.const 1) (i32.const 2396)) + (call $assert_return (call $ne (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2400)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -nan)) (i32.const 1) (i32.const 2404)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2408)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const nan)) (i32.const 1) (i32.const 2412)) + (call $assert_return (call $ne (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2416)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2420)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2424)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2428)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2432)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2436)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2440)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2444)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2448)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2452)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2456)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2460)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2464)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2468)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2472)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2476)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2480)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2484)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2488)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2492)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2496)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 2500)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2504)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2508)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 2512)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2516)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2520)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2524)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2528)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1) (i32.const 2532)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1) (i32.const 2536)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1) (i32.const 2540)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1) (i32.const 2544)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 1) (i32.const 2548)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2552)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 1) (i32.const 2556)) + (call $assert_return (call $ne (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2560)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 1) (i32.const 2564)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2568)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 1) (i32.const 2572)) + (call $assert_return (call $ne (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2576)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2580)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2584)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2588)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2592)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2596)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2600)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2604)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2608)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2612)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2616)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2620)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2624)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2628)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2632)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2636)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2640)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2644)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2648)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2652)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2656)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2660)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2664)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2668)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2672)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 2676)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2680)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2684)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 2688)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1) (i32.const 2692)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1) (i32.const 2696)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1) (i32.const 2700)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1) (i32.const 2704)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1) (i32.const 2708)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2712)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1) (i32.const 2716)) + (call $assert_return (call $ne (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2720)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1) (i32.const 2724)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2728)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1) (i32.const 2732)) + (call $assert_return (call $ne (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2736)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2740)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2744)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2748)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2752)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2756)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2760)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2764)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2768)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2772)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2776)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2780)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2784)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2788)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2792)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2796)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x1p-1)) (i32.const 1) (i32.const 2800)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2804)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2808)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x1p+0)) (i32.const 1) (i32.const 2812)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x1p+0)) (i32.const 1) (i32.const 2816)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2820)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2824)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2828)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 2832)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2836)) + (call $assert_return (call $ne (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2840)) + (call $assert_return (call $ne (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2844)) + (call $assert_return (call $ne (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 2848)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -inf)) (i32.const 0) (i32.const 2852)) + (call $assert_return (call $ne (f64.const -inf) (f64.const inf)) (i32.const 1) (i32.const 2856)) + (call $assert_return (call $ne (f64.const inf) (f64.const -inf)) (i32.const 1) (i32.const 2860)) + (call $assert_return (call $ne (f64.const inf) (f64.const inf)) (i32.const 0) (i32.const 2864)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -nan)) (i32.const 1) (i32.const 2868)) + (call $assert_return (call $ne (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2872)) + (call $assert_return (call $ne (f64.const -inf) (f64.const nan)) (i32.const 1) (i32.const 2876)) + (call $assert_return (call $ne (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2880)) + (call $assert_return (call $ne (f64.const inf) (f64.const -nan)) (i32.const 1) (i32.const 2884)) + (call $assert_return (call $ne (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 2888)) + (call $assert_return (call $ne (f64.const inf) (f64.const nan)) (i32.const 1) (i32.const 2892)) + (call $assert_return (call $ne (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 2896)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2900)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2904)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2908)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2912)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2916)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 1) (i32.const 2920)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2924)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 1) (i32.const 2928)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2932)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2936)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2940)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2944)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2948)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2952)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2956)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 2960)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2964)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2968)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2972)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2976)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2980)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 2984)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2988)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 2992)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x1p-1)) (i32.const 1) (i32.const 2996)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 1) (i32.const 3000)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3004)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3008)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x1p-1)) (i32.const 1) (i32.const 3012)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 1) (i32.const 3016)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3020)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3024)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x1p+0)) (i32.const 1) (i32.const 3028)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 1) (i32.const 3032)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3036)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3040)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x1p+0)) (i32.const 1) (i32.const 3044)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 1) (i32.const 3048)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3052)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3056)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3060)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3064)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3068)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3072)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3076)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3080)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3084)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3088)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3092)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3096)) + (call $assert_return (call $ne (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3100)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3104)) + (call $assert_return (call $ne (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3108)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3112)) + (call $assert_return (call $ne (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3116)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3120)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -inf)) (i32.const 1) (i32.const 3124)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 1) (i32.const 3128)) + (call $assert_return (call $ne (f64.const -nan) (f64.const inf)) (i32.const 1) (i32.const 3132)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 1) (i32.const 3136)) + (call $assert_return (call $ne (f64.const nan) (f64.const -inf)) (i32.const 1) (i32.const 3140)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 1) (i32.const 3144)) + (call $assert_return (call $ne (f64.const nan) (f64.const inf)) (i32.const 1) (i32.const 3148)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 1) (i32.const 3152)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -nan)) (i32.const 1) (i32.const 3156)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 1) (i32.const 3160)) + (call $assert_return (call $ne (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 3164)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 3168)) + (call $assert_return (call $ne (f64.const -nan) (f64.const nan)) (i32.const 1) (i32.const 3172)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 1) (i32.const 3176)) + (call $assert_return (call $ne (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 3180)) + (call $assert_return (call $ne (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 3184)) + (call $assert_return (call $ne (f64.const nan) (f64.const -nan)) (i32.const 1) (i32.const 3188)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 1) (i32.const 3192)) + (call $assert_return (call $ne (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 3196)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 1) (i32.const 3200)) + (call $assert_return (call $ne (f64.const nan) (f64.const nan)) (i32.const 1) (i32.const 3204)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 1) (i32.const 3208)) + (call $assert_return (call $ne (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 3212)) + (call $assert_return (call $ne (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 1) (i32.const 3216)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 3220)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 3224)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 3228)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 3232)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3236)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3240)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3244)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3248)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3252)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3256)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3260)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3264)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3268)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3272)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3276)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3280)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3284)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3288)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3292)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3296)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3300)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3304)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3308)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3312)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3316)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3320)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3324)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3328)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -inf)) (i32.const 0) (i32.const 3332)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const inf)) (i32.const 1) (i32.const 3336)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -inf)) (i32.const 0) (i32.const 3340)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const inf)) (i32.const 1) (i32.const 3344)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 3348)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3352)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 3356)) + (call $assert_return (call $lt (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3360)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 3364)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3368)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 3372)) + (call $assert_return (call $lt (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3376)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 3380)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 3384)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 3388)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 3392)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3396)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3400)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3404)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3408)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3412)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3416)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3420)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3424)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3428)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3432)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3436)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3440)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3444)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3448)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3452)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3456)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3460)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3464)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3468)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3472)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3476)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3480)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3484)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3488)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0) (i32.const 3492)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1) (i32.const 3496)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0) (i32.const 3500)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1) (i32.const 3504)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 3508)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3512)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 3516)) + (call $assert_return (call $lt (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3520)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 3524)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3528)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 3532)) + (call $assert_return (call $lt (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3536)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 3540)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 3544)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 3548)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 3552)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3556)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3560)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3564)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3568)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3572)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3576)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3580)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 3584)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3588)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3592)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3596)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3600)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3604)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3608)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3612)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3616)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3620)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3624)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3628)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3632)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3636)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3640)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3644)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3648)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 0) (i32.const 3652)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const inf)) (i32.const 1) (i32.const 3656)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 0) (i32.const 3660)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const inf)) (i32.const 1) (i32.const 3664)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 3668)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3672)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 3676)) + (call $assert_return (call $lt (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3680)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 3684)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3688)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 3692)) + (call $assert_return (call $lt (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3696)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1) (i32.const 3700)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1) (i32.const 3704)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0) (i32.const 3708)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0) (i32.const 3712)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3716)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3720)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3724)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3728)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 3732)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3736)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3740)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 3744)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3748)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3752)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3756)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0) (i32.const 3760)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3764)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3768)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3772)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3776)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3780)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3784)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3788)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3792)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3796)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3800)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3804)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3808)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -inf)) (i32.const 0) (i32.const 3812)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const inf)) (i32.const 1) (i32.const 3816)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -inf)) (i32.const 0) (i32.const 3820)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const inf)) (i32.const 1) (i32.const 3824)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 3828)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3832)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 3836)) + (call $assert_return (call $lt (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3840)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 3844)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3848)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 3852)) + (call $assert_return (call $lt (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 3856)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 3860)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 3864)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 3868)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 3872)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3876)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 3880)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3884)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 3888)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 3892)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 3896)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 3900)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 3904)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 3908)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 3912)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 3916)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 3920)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3924)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 3928)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 3932)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 3936)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3940)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3944)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 3948)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 3952)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3956)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3960)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 3964)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 3968)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -inf)) (i32.const 0) (i32.const 3972)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const inf)) (i32.const 1) (i32.const 3976)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -inf)) (i32.const 0) (i32.const 3980)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const inf)) (i32.const 1) (i32.const 3984)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 3988)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 3992)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 3996)) + (call $assert_return (call $lt (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4000)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 4004)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4008)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 4012)) + (call $assert_return (call $lt (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4016)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1) (i32.const 4020)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1) (i32.const 4024)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4028)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4032)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4036)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4040)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4044)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4048)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 4052)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 4056)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4060)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4064)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1) (i32.const 4068)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1) (i32.const 4072)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4076)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4080)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1) (i32.const 4084)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1) (i32.const 4088)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4092)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4096)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4100)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4104)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4108)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4112)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4116)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4120)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4124)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4128)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0) (i32.const 4132)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1) (i32.const 4136)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0) (i32.const 4140)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1) (i32.const 4144)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 4148)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4152)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 4156)) + (call $assert_return (call $lt (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4160)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 4164)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4168)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 4172)) + (call $assert_return (call $lt (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4176)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1) (i32.const 4180)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1) (i32.const 4184)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4188)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4192)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4196)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4200)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4204)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4208)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 4212)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 4216)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4220)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4224)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1) (i32.const 4228)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1) (i32.const 4232)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4236)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4240)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1) (i32.const 4244)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1) (i32.const 4248)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4252)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4256)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4260)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4264)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4268)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4272)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4276)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4280)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4284)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4288)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0) (i32.const 4292)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1) (i32.const 4296)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0) (i32.const 4300)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1) (i32.const 4304)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 4308)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4312)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 4316)) + (call $assert_return (call $lt (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4320)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 4324)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4328)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 4332)) + (call $assert_return (call $lt (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4336)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x0p+0)) (i32.const 1) (i32.const 4340)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x0p+0)) (i32.const 1) (i32.const 4344)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4348)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4352)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4356)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4360)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4364)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4368)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 4372)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 4376)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4380)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4384)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x1p-1)) (i32.const 1) (i32.const 4388)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x1p-1)) (i32.const 1) (i32.const 4392)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4396)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4400)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x1p+0)) (i32.const 1) (i32.const 4404)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x1p+0)) (i32.const 1) (i32.const 4408)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4412)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4416)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4420)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4424)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4428)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4432)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4436)) + (call $assert_return (call $lt (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4440)) + (call $assert_return (call $lt (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4444)) + (call $assert_return (call $lt (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4448)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -inf)) (i32.const 0) (i32.const 4452)) + (call $assert_return (call $lt (f64.const -inf) (f64.const inf)) (i32.const 1) (i32.const 4456)) + (call $assert_return (call $lt (f64.const inf) (f64.const -inf)) (i32.const 0) (i32.const 4460)) + (call $assert_return (call $lt (f64.const inf) (f64.const inf)) (i32.const 0) (i32.const 4464)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -nan)) (i32.const 0) (i32.const 4468)) + (call $assert_return (call $lt (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4472)) + (call $assert_return (call $lt (f64.const -inf) (f64.const nan)) (i32.const 0) (i32.const 4476)) + (call $assert_return (call $lt (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4480)) + (call $assert_return (call $lt (f64.const inf) (f64.const -nan)) (i32.const 0) (i32.const 4484)) + (call $assert_return (call $lt (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4488)) + (call $assert_return (call $lt (f64.const inf) (f64.const nan)) (i32.const 0) (i32.const 4492)) + (call $assert_return (call $lt (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4496)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4500)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4504)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4508)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4512)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4516)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4520)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4524)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4528)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4532)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4536)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4540)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4544)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4548)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4552)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4556)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4560)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4564)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4568)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4572)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4576)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4580)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4584)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4588)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 4592)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4596)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4600)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4604)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4608)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4612)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4616)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4620)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 4624)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4628)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4632)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4636)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4640)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4644)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4648)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4652)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 4656)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4660)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4664)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4668)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4672)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4676)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4680)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4684)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4688)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4692)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4696)) + (call $assert_return (call $lt (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4700)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4704)) + (call $assert_return (call $lt (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4708)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4712)) + (call $assert_return (call $lt (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4716)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4720)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -inf)) (i32.const 0) (i32.const 4724)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 4728)) + (call $assert_return (call $lt (f64.const -nan) (f64.const inf)) (i32.const 0) (i32.const 4732)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 4736)) + (call $assert_return (call $lt (f64.const nan) (f64.const -inf)) (i32.const 0) (i32.const 4740)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 4744)) + (call $assert_return (call $lt (f64.const nan) (f64.const inf)) (i32.const 0) (i32.const 4748)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 4752)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -nan)) (i32.const 0) (i32.const 4756)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 4760)) + (call $assert_return (call $lt (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4764)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4768)) + (call $assert_return (call $lt (f64.const -nan) (f64.const nan)) (i32.const 0) (i32.const 4772)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 4776)) + (call $assert_return (call $lt (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4780)) + (call $assert_return (call $lt (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4784)) + (call $assert_return (call $lt (f64.const nan) (f64.const -nan)) (i32.const 0) (i32.const 4788)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 4792)) + (call $assert_return (call $lt (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4796)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4800)) + (call $assert_return (call $lt (f64.const nan) (f64.const nan)) (i32.const 0) (i32.const 4804)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 4808)) + (call $assert_return (call $lt (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4812)) + (call $assert_return (call $lt (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4816)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 4820)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 4824)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 4828)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 4832)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4836)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4840)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 4844)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4848)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4852)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 4856)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 4860)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 4864)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4868)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 4872)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 4876)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 4880)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4884)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 4888)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 4892)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 4896)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4900)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4904)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 4908)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 4912)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4916)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4920)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 4924)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 4928)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -inf)) (i32.const 0) (i32.const 4932)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const inf)) (i32.const 1) (i32.const 4936)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -inf)) (i32.const 0) (i32.const 4940)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const inf)) (i32.const 1) (i32.const 4944)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 4948)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4952)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 4956)) + (call $assert_return (call $le (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4960)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 4964)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 4968)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 4972)) + (call $assert_return (call $le (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 4976)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 4980)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 4984)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 4988)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 4992)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 4996)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5000)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5004)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5008)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5012)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5016)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5020)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5024)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5028)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5032)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5036)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5040)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5044)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5048)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5052)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5056)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5060)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5064)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5068)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5072)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5076)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5080)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5084)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5088)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0) (i32.const 5092)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1) (i32.const 5096)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0) (i32.const 5100)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1) (i32.const 5104)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 5108)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5112)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 5116)) + (call $assert_return (call $le (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5120)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 5124)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5128)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 5132)) + (call $assert_return (call $le (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5136)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 5140)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 5144)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 5148)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 5152)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5156)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5160)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5164)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5168)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 5172)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5176)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5180)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5184)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5188)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5192)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5196)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5200)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5204)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5208)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5212)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5216)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5220)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5224)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5228)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5232)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5236)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5240)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5244)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5248)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 0) (i32.const 5252)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const inf)) (i32.const 1) (i32.const 5256)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 0) (i32.const 5260)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const inf)) (i32.const 1) (i32.const 5264)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 5268)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5272)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 5276)) + (call $assert_return (call $le (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5280)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 5284)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5288)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 5292)) + (call $assert_return (call $le (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5296)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1) (i32.const 5300)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1) (i32.const 5304)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0) (i32.const 5308)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0) (i32.const 5312)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5316)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5320)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5324)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5328)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 5332)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5336)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5340)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 5344)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1) (i32.const 5348)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5352)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5356)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5360)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5364)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5368)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5372)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5376)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5380)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5384)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5388)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5392)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5396)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5400)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5404)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5408)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -inf)) (i32.const 0) (i32.const 5412)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const inf)) (i32.const 1) (i32.const 5416)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -inf)) (i32.const 0) (i32.const 5420)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const inf)) (i32.const 1) (i32.const 5424)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 5428)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5432)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 5436)) + (call $assert_return (call $le (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5440)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 5444)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5448)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 5452)) + (call $assert_return (call $le (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5456)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 5460)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 5464)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 5468)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 5472)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5476)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5480)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5484)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5488)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 5492)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5496)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5500)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 5504)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 5508)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5512)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5516)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 5520)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 5524)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5528)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5532)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5536)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5540)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5544)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5548)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5552)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5556)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5560)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5564)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5568)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -inf)) (i32.const 0) (i32.const 5572)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const inf)) (i32.const 1) (i32.const 5576)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -inf)) (i32.const 0) (i32.const 5580)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const inf)) (i32.const 1) (i32.const 5584)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 5588)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5592)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 5596)) + (call $assert_return (call $le (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5600)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 5604)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5608)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 5612)) + (call $assert_return (call $le (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5616)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1) (i32.const 5620)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1) (i32.const 5624)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0) (i32.const 5628)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0) (i32.const 5632)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5636)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5640)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5644)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5648)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 5652)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5656)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5660)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 5664)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1) (i32.const 5668)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5672)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5676)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0) (i32.const 5680)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1) (i32.const 5684)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5688)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5692)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0) (i32.const 5696)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5700)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5704)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5708)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5712)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5716)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5720)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5724)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5728)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0) (i32.const 5732)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1) (i32.const 5736)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0) (i32.const 5740)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1) (i32.const 5744)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 5748)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5752)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 5756)) + (call $assert_return (call $le (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5760)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 5764)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5768)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 5772)) + (call $assert_return (call $le (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5776)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1) (i32.const 5780)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1) (i32.const 5784)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0) (i32.const 5788)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0) (i32.const 5792)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5796)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5800)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5804)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5808)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 5812)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5816)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5820)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 5824)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1) (i32.const 5828)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5832)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5836)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0) (i32.const 5840)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1) (i32.const 5844)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1) (i32.const 5848)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0) (i32.const 5852)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0) (i32.const 5856)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5860)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 5864)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5868)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 5872)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5876)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5880)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 5884)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 5888)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0) (i32.const 5892)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1) (i32.const 5896)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0) (i32.const 5900)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1) (i32.const 5904)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 5908)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5912)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 5916)) + (call $assert_return (call $le (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5920)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 5924)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 5928)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 5932)) + (call $assert_return (call $le (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 5936)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x0p+0)) (i32.const 1) (i32.const 5940)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x0p+0)) (i32.const 1) (i32.const 5944)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x0p+0)) (i32.const 0) (i32.const 5948)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x0p+0)) (i32.const 0) (i32.const 5952)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5956)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 5960)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5964)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 5968)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 5972)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 5976)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 5980)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 5984)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x1p-1)) (i32.const 1) (i32.const 5988)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x1p-1)) (i32.const 1) (i32.const 5992)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x1p-1)) (i32.const 0) (i32.const 5996)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6000)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6004)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x1p+0)) (i32.const 1) (i32.const 6008)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x1p+0)) (i32.const 0) (i32.const 6012)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6016)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6020)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6024)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6028)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6032)) + (call $assert_return (call $le (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6036)) + (call $assert_return (call $le (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6040)) + (call $assert_return (call $le (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6044)) + (call $assert_return (call $le (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6048)) + (call $assert_return (call $le (f64.const -inf) (f64.const -inf)) (i32.const 1) (i32.const 6052)) + (call $assert_return (call $le (f64.const -inf) (f64.const inf)) (i32.const 1) (i32.const 6056)) + (call $assert_return (call $le (f64.const inf) (f64.const -inf)) (i32.const 0) (i32.const 6060)) + (call $assert_return (call $le (f64.const inf) (f64.const inf)) (i32.const 1) (i32.const 6064)) + (call $assert_return (call $le (f64.const -inf) (f64.const -nan)) (i32.const 0) (i32.const 6068)) + (call $assert_return (call $le (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6072)) + (call $assert_return (call $le (f64.const -inf) (f64.const nan)) (i32.const 0) (i32.const 6076)) + (call $assert_return (call $le (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6080)) + (call $assert_return (call $le (f64.const inf) (f64.const -nan)) (i32.const 0) (i32.const 6084)) + (call $assert_return (call $le (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6088)) + (call $assert_return (call $le (f64.const inf) (f64.const nan)) (i32.const 0) (i32.const 6092)) + (call $assert_return (call $le (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6096)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6100)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6104)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6108)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6112)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6116)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6120)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6124)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6128)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6132)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6136)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6140)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6144)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6148)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6152)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6156)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6160)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 6164)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 6168)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6172)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6176)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 6180)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 6184)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6188)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6192)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 6196)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 6200)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6204)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6208)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 6212)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 6216)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6220)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6224)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 6228)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 6232)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6236)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6240)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 6244)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 6248)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6252)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6256)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6260)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6264)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6268)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6272)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6276)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6280)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6284)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6288)) + (call $assert_return (call $le (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6292)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6296)) + (call $assert_return (call $le (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6300)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6304)) + (call $assert_return (call $le (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6308)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6312)) + (call $assert_return (call $le (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6316)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6320)) + (call $assert_return (call $le (f64.const -nan) (f64.const -inf)) (i32.const 0) (i32.const 6324)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 6328)) + (call $assert_return (call $le (f64.const -nan) (f64.const inf)) (i32.const 0) (i32.const 6332)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 6336)) + (call $assert_return (call $le (f64.const nan) (f64.const -inf)) (i32.const 0) (i32.const 6340)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 6344)) + (call $assert_return (call $le (f64.const nan) (f64.const inf)) (i32.const 0) (i32.const 6348)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 6352)) + (call $assert_return (call $le (f64.const -nan) (f64.const -nan)) (i32.const 0) (i32.const 6356)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 6360)) + (call $assert_return (call $le (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6364)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6368)) + (call $assert_return (call $le (f64.const -nan) (f64.const nan)) (i32.const 0) (i32.const 6372)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 6376)) + (call $assert_return (call $le (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6380)) + (call $assert_return (call $le (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6384)) + (call $assert_return (call $le (f64.const nan) (f64.const -nan)) (i32.const 0) (i32.const 6388)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 6392)) + (call $assert_return (call $le (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6396)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6400)) + (call $assert_return (call $le (f64.const nan) (f64.const nan)) (i32.const 0) (i32.const 6404)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 6408)) + (call $assert_return (call $le (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6412)) + (call $assert_return (call $le (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6416)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6420)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6424)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6428)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6432)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6436)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6440)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6444)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6448)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 6452)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6456)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 6460)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6464)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6468)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6472)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6476)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6480)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6484)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6488)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6492)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6496)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6500)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6504)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6508)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6512)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6516)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6520)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6524)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6528)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -inf)) (i32.const 1) (i32.const 6532)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const inf)) (i32.const 0) (i32.const 6536)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -inf)) (i32.const 1) (i32.const 6540)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const inf)) (i32.const 0) (i32.const 6544)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 6548)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6552)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 6556)) + (call $assert_return (call $gt (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6560)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 6564)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6568)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 6572)) + (call $assert_return (call $gt (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6576)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6580)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6584)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 6588)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 6592)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6596)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6600)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6604)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6608)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 6612)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6616)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 6620)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6624)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6628)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6632)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6636)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6640)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6644)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6648)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6652)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6656)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6660)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6664)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6668)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6672)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6676)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6680)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6684)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6688)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1) (i32.const 6692)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0) (i32.const 6696)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1) (i32.const 6700)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0) (i32.const 6704)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 6708)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6712)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 6716)) + (call $assert_return (call $gt (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6720)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 6724)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6728)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 6732)) + (call $assert_return (call $gt (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6736)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6740)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6744)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 6748)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 6752)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6756)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6760)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6764)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6768)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 6772)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6776)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 6780)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6784)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6788)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6792)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6796)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6800)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6804)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6808)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6812)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6816)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6820)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6824)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6828)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6832)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6836)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6840)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6844)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 6848)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 1) (i32.const 6852)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const inf)) (i32.const 0) (i32.const 6856)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 1) (i32.const 6860)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const inf)) (i32.const 0) (i32.const 6864)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 6868)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6872)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 6876)) + (call $assert_return (call $gt (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6880)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 6884)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 6888)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 6892)) + (call $assert_return (call $gt (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 6896)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0) (i32.const 6900)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0) (i32.const 6904)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1) (i32.const 6908)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1) (i32.const 6912)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6916)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 6920)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6924)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 6928)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 6932)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 6936)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 6940)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 6944)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0) (i32.const 6948)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6952)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1) (i32.const 6956)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0) (i32.const 6960)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6964)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6968)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1) (i32.const 6972)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0) (i32.const 6976)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6980)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6984)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 6988)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 6992)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 6996)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7000)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7004)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7008)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -inf)) (i32.const 1) (i32.const 7012)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const inf)) (i32.const 0) (i32.const 7016)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -inf)) (i32.const 1) (i32.const 7020)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const inf)) (i32.const 0) (i32.const 7024)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 7028)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7032)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 7036)) + (call $assert_return (call $gt (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7040)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 7044)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7048)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 7052)) + (call $assert_return (call $gt (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7056)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7060)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7064)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 7068)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 7072)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7076)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7080)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7084)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7088)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7092)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7096)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 7100)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 7104)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7108)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7112)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 7116)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 7120)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7124)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7128)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 7132)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7136)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7140)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7144)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7148)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7152)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7156)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7160)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7164)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7168)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -inf)) (i32.const 1) (i32.const 7172)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const inf)) (i32.const 0) (i32.const 7176)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -inf)) (i32.const 1) (i32.const 7180)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const inf)) (i32.const 0) (i32.const 7184)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 7188)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7192)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 7196)) + (call $assert_return (call $gt (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7200)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 7204)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7208)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 7212)) + (call $assert_return (call $gt (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7216)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7220)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7224)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1) (i32.const 7228)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1) (i32.const 7232)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7236)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7240)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7244)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7248)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7252)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7256)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 7260)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 7264)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7268)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7272)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1) (i32.const 7276)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1) (i32.const 7280)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7284)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7288)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1) (i32.const 7292)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1) (i32.const 7296)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7300)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7304)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7308)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7312)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7316)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7320)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7324)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7328)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1) (i32.const 7332)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0) (i32.const 7336)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1) (i32.const 7340)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0) (i32.const 7344)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 7348)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7352)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 7356)) + (call $assert_return (call $gt (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7360)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 7364)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7368)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 7372)) + (call $assert_return (call $gt (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7376)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7380)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7384)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1) (i32.const 7388)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1) (i32.const 7392)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7396)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7400)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7404)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7408)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7412)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7416)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 7420)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 7424)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7428)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7432)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1) (i32.const 7436)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1) (i32.const 7440)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7444)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7448)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1) (i32.const 7452)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1) (i32.const 7456)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7460)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7464)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7468)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7472)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7476)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7480)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7484)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7488)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1) (i32.const 7492)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0) (i32.const 7496)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1) (i32.const 7500)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0) (i32.const 7504)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 7508)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7512)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 7516)) + (call $assert_return (call $gt (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7520)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 7524)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7528)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 7532)) + (call $assert_return (call $gt (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7536)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7540)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7544)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x0p+0)) (i32.const 1) (i32.const 7548)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x0p+0)) (i32.const 1) (i32.const 7552)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7556)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7560)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7564)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 7568)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7572)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7576)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 7580)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 7584)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7588)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7592)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x1p-1)) (i32.const 1) (i32.const 7596)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x1p-1)) (i32.const 1) (i32.const 7600)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7604)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7608)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x1p+0)) (i32.const 1) (i32.const 7612)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x1p+0)) (i32.const 1) (i32.const 7616)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7620)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7624)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7628)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 7632)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7636)) + (call $assert_return (call $gt (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7640)) + (call $assert_return (call $gt (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7644)) + (call $assert_return (call $gt (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 7648)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -inf)) (i32.const 0) (i32.const 7652)) + (call $assert_return (call $gt (f64.const -inf) (f64.const inf)) (i32.const 0) (i32.const 7656)) + (call $assert_return (call $gt (f64.const inf) (f64.const -inf)) (i32.const 1) (i32.const 7660)) + (call $assert_return (call $gt (f64.const inf) (f64.const inf)) (i32.const 0) (i32.const 7664)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -nan)) (i32.const 0) (i32.const 7668)) + (call $assert_return (call $gt (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7672)) + (call $assert_return (call $gt (f64.const -inf) (f64.const nan)) (i32.const 0) (i32.const 7676)) + (call $assert_return (call $gt (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7680)) + (call $assert_return (call $gt (f64.const inf) (f64.const -nan)) (i32.const 0) (i32.const 7684)) + (call $assert_return (call $gt (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7688)) + (call $assert_return (call $gt (f64.const inf) (f64.const nan)) (i32.const 0) (i32.const 7692)) + (call $assert_return (call $gt (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7696)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7700)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7704)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7708)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7712)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7716)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 7720)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7724)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 7728)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7732)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7736)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7740)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7744)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7748)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7752)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7756)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 7760)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7764)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7768)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7772)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7776)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7780)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 7784)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7788)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 7792)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7796)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7800)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7804)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7808)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7812)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 7816)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7820)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 7824)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7828)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7832)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7836)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7840)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7844)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 7848)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7852)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 7856)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7860)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7864)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7868)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7872)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7876)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7880)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7884)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 7888)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7892)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7896)) + (call $assert_return (call $gt (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7900)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7904)) + (call $assert_return (call $gt (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7908)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7912)) + (call $assert_return (call $gt (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7916)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 7920)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -inf)) (i32.const 0) (i32.const 7924)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 7928)) + (call $assert_return (call $gt (f64.const -nan) (f64.const inf)) (i32.const 0) (i32.const 7932)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 7936)) + (call $assert_return (call $gt (f64.const nan) (f64.const -inf)) (i32.const 0) (i32.const 7940)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 7944)) + (call $assert_return (call $gt (f64.const nan) (f64.const inf)) (i32.const 0) (i32.const 7948)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 7952)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -nan)) (i32.const 0) (i32.const 7956)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 7960)) + (call $assert_return (call $gt (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7964)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7968)) + (call $assert_return (call $gt (f64.const -nan) (f64.const nan)) (i32.const 0) (i32.const 7972)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 7976)) + (call $assert_return (call $gt (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7980)) + (call $assert_return (call $gt (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 7984)) + (call $assert_return (call $gt (f64.const nan) (f64.const -nan)) (i32.const 0) (i32.const 7988)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 7992)) + (call $assert_return (call $gt (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 7996)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8000)) + (call $assert_return (call $gt (f64.const nan) (f64.const nan)) (i32.const 0) (i32.const 8004)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 8008)) + (call $assert_return (call $gt (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8012)) + (call $assert_return (call $gt (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8016)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8020)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8024)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8028)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8032)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8036)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8040)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8044)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8048)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8052)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8056)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8060)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8064)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8068)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8072)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8076)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8080)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8084)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8088)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8092)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8096)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8100)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8104)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8108)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8112)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8116)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8120)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8124)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8128)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -inf)) (i32.const 1) (i32.const 8132)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const inf)) (i32.const 0) (i32.const 8136)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -inf)) (i32.const 1) (i32.const 8140)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const inf)) (i32.const 0) (i32.const 8144)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 8148)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8152)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 8156)) + (call $assert_return (call $ge (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8160)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0) (i32.const 8164)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8168)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const nan)) (i32.const 0) (i32.const 8172)) + (call $assert_return (call $ge (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8176)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 8180)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 8184)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8188)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8192)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8196)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8200)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8204)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8208)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8212)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8216)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8220)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8224)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8228)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8232)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8236)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8240)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8244)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8248)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8252)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8256)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8260)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8264)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8268)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8272)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8276)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8280)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8284)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8288)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1) (i32.const 8292)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0) (i32.const 8296)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1) (i32.const 8300)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0) (i32.const 8304)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 8308)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8312)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 8316)) + (call $assert_return (call $ge (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8320)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0) (i32.const 8324)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8328)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0) (i32.const 8332)) + (call $assert_return (call $ge (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8336)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0) (i32.const 8340)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0) (i32.const 8344)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8348)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8352)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8356)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8360)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8364)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8368)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8372)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8376)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8380)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 8384)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8388)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8392)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8396)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8400)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8404)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8408)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8412)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8416)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8420)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8424)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8428)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8432)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8436)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8440)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8444)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8448)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 1) (i32.const 8452)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const inf)) (i32.const 0) (i32.const 8456)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 1) (i32.const 8460)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const inf)) (i32.const 0) (i32.const 8464)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 8468)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8472)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 8476)) + (call $assert_return (call $ge (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8480)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0) (i32.const 8484)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8488)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0) (i32.const 8492)) + (call $assert_return (call $ge (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8496)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0) (i32.const 8500)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0) (i32.const 8504)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8508)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8512)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8516)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8520)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8524)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8528)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 8532)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8536)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8540)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 8544)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8548)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8552)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8556)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1) (i32.const 8560)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8564)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8568)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8572)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8576)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8580)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8584)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8588)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8592)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8596)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8600)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8604)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8608)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -inf)) (i32.const 1) (i32.const 8612)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const inf)) (i32.const 0) (i32.const 8616)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -inf)) (i32.const 1) (i32.const 8620)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const inf)) (i32.const 0) (i32.const 8624)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 8628)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8632)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 8636)) + (call $assert_return (call $ge (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8640)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0) (i32.const 8644)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8648)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const nan)) (i32.const 0) (i32.const 8652)) + (call $assert_return (call $ge (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8656)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0) (i32.const 8660)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0) (i32.const 8664)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8668)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8672)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8676)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8680)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8684)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8688)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 8692)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8696)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8700)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 8704)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0) (i32.const 8708)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8712)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8716)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1) (i32.const 8720)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8724)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8728)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8732)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1) (i32.const 8736)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8740)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8744)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8748)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8752)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8756)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8760)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8764)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8768)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -inf)) (i32.const 1) (i32.const 8772)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const inf)) (i32.const 0) (i32.const 8776)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -inf)) (i32.const 1) (i32.const 8780)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const inf)) (i32.const 0) (i32.const 8784)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 8788)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8792)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 8796)) + (call $assert_return (call $ge (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8800)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0) (i32.const 8804)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8808)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const nan)) (i32.const 0) (i32.const 8812)) + (call $assert_return (call $ge (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8816)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0) (i32.const 8820)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0) (i32.const 8824)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8828)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8832)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8836)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8840)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8844)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 8848)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 8852)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 8856)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 8860)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 8864)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0) (i32.const 8868)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0) (i32.const 8872)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1) (i32.const 8876)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1) (i32.const 8880)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0) (i32.const 8884)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0) (i32.const 8888)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1) (i32.const 8892)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1) (i32.const 8896)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8900)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 8904)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8908)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 8912)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8916)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8920)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 8924)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 8928)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1) (i32.const 8932)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0) (i32.const 8936)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1) (i32.const 8940)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0) (i32.const 8944)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 8948)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8952)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 8956)) + (call $assert_return (call $ge (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8960)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0) (i32.const 8964)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 8968)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0) (i32.const 8972)) + (call $assert_return (call $ge (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 8976)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0) (i32.const 8980)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0) (i32.const 8984)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1) (i32.const 8988)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1) (i32.const 8992)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 8996)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9000)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 9004)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 9008)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 9012)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 9016)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 9020)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 9024)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0) (i32.const 9028)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0) (i32.const 9032)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1) (i32.const 9036)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1) (i32.const 9040)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0) (i32.const 9044)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0) (i32.const 9048)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1) (i32.const 9052)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1) (i32.const 9056)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9060)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9064)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 9068)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 9072)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 9076)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9080)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 9084)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 9088)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1) (i32.const 9092)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0) (i32.const 9096)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1) (i32.const 9100)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0) (i32.const 9104)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 9108)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9112)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 9116)) + (call $assert_return (call $ge (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9120)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0) (i32.const 9124)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9128)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0) (i32.const 9132)) + (call $assert_return (call $ge (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9136)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x0p+0)) (i32.const 0) (i32.const 9140)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x0p+0)) (i32.const 0) (i32.const 9144)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x0p+0)) (i32.const 1) (i32.const 9148)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x0p+0)) (i32.const 1) (i32.const 9152)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9156)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9160)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1) (i32.const 9164)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1) (i32.const 9168)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 9172)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 9176)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x1p-1022)) (i32.const 1) (i32.const 9180)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x1p-1022)) (i32.const 1) (i32.const 9184)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x1p-1)) (i32.const 0) (i32.const 9188)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x1p-1)) (i32.const 0) (i32.const 9192)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x1p-1)) (i32.const 1) (i32.const 9196)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x1p-1)) (i32.const 1) (i32.const 9200)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x1p+0)) (i32.const 0) (i32.const 9204)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x1p+0)) (i32.const 0) (i32.const 9208)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x1p+0)) (i32.const 1) (i32.const 9212)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x1p+0)) (i32.const 1) (i32.const 9216)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9220)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9224)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 9228)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1) (i32.const 9232)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9236)) + (call $assert_return (call $ge (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9240)) + (call $assert_return (call $ge (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 9244)) + (call $assert_return (call $ge (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1) (i32.const 9248)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -inf)) (i32.const 1) (i32.const 9252)) + (call $assert_return (call $ge (f64.const -inf) (f64.const inf)) (i32.const 0) (i32.const 9256)) + (call $assert_return (call $ge (f64.const inf) (f64.const -inf)) (i32.const 1) (i32.const 9260)) + (call $assert_return (call $ge (f64.const inf) (f64.const inf)) (i32.const 1) (i32.const 9264)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -nan)) (i32.const 0) (i32.const 9268)) + (call $assert_return (call $ge (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9272)) + (call $assert_return (call $ge (f64.const -inf) (f64.const nan)) (i32.const 0) (i32.const 9276)) + (call $assert_return (call $ge (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9280)) + (call $assert_return (call $ge (f64.const inf) (f64.const -nan)) (i32.const 0) (i32.const 9284)) + (call $assert_return (call $ge (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9288)) + (call $assert_return (call $ge (f64.const inf) (f64.const nan)) (i32.const 0) (i32.const 9292)) + (call $assert_return (call $ge (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9296)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 9300)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 9304)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 9308)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 9312)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x0p+0)) (i32.const 0) (i32.const 9316)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0) (i32.const 9320)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x0p+0)) (i32.const 0) (i32.const 9324)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0) (i32.const 9328)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9332)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9336)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9340)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9344)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9348)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9352)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9356)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 9360)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 9364)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 9368)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 9372)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 9376)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 9380)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0) (i32.const 9384)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 9388)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0) (i32.const 9392)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 9396)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 9400)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 9404)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 9408)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x1p-1)) (i32.const 0) (i32.const 9412)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0) (i32.const 9416)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x1p-1)) (i32.const 0) (i32.const 9420)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0) (i32.const 9424)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 9428)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 9432)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 9436)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 9440)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x1p+0)) (i32.const 0) (i32.const 9444)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0) (i32.const 9448)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x1p+0)) (i32.const 0) (i32.const 9452)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0) (i32.const 9456)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9460)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9464)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9468)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9472)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9476)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9480)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9484)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0) (i32.const 9488)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9492)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9496)) + (call $assert_return (call $ge (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9500)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9504)) + (call $assert_return (call $ge (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9508)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9512)) + (call $assert_return (call $ge (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9516)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0) (i32.const 9520)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -inf)) (i32.const 0) (i32.const 9524)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 9528)) + (call $assert_return (call $ge (f64.const -nan) (f64.const inf)) (i32.const 0) (i32.const 9532)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 9536)) + (call $assert_return (call $ge (f64.const nan) (f64.const -inf)) (i32.const 0) (i32.const 9540)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0) (i32.const 9544)) + (call $assert_return (call $ge (f64.const nan) (f64.const inf)) (i32.const 0) (i32.const 9548)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0) (i32.const 9552)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -nan)) (i32.const 0) (i32.const 9556)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 9560)) + (call $assert_return (call $ge (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9564)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9568)) + (call $assert_return (call $ge (f64.const -nan) (f64.const nan)) (i32.const 0) (i32.const 9572)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 9576)) + (call $assert_return (call $ge (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9580)) + (call $assert_return (call $ge (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9584)) + (call $assert_return (call $ge (f64.const nan) (f64.const -nan)) (i32.const 0) (i32.const 9588)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0) (i32.const 9592)) + (call $assert_return (call $ge (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9596)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0) (i32.const 9600)) + (call $assert_return (call $ge (f64.const nan) (f64.const nan)) (i32.const 0) (i32.const 9604)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0) (i32.const 9608)) + (call $assert_return (call $ge (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9612)) + (call $assert_return (call $ge (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0) (i32.const 9616)) +)) +)====="; + +static const char f32_f64_conv_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (data (i32.const 20) "1") + (data (i32.const 24) "2") + (data (i32.const 28) "3") + (data (i32.const 32) "4") + (data (i32.const 36) "5") + (data (i32.const 40) "6") + (data (i32.const 44) "7") + (data (i32.const 48) "8") + (data (i32.const 52) "9") + (data (i32.const 56) "10") + (data (i32.const 60) "11") + (data (i32.const 64) "12") + (data (i32.const 68) "13") + (data (i32.const 72) "14") + (data (i32.const 76) "15") + (data (i32.const 80) "16") + (data (i32.const 84) "17") + (data (i32.const 88) "18") + (data (i32.const 92) "19") + (data (i32.const 96) "20") + (data (i32.const 100) "21") + (data (i32.const 104) "22") + (data (i32.const 108) "23") + (data (i32.const 112) "24") + (data (i32.const 116) "25") + (data (i32.const 120) "26") + (data (i32.const 124) "27") + (data (i32.const 128) "28") + (data (i32.const 132) "29") + (data (i32.const 136) "30") + (data (i32.const 140) "31") + (data (i32.const 144) "32") + (data (i32.const 148) "33") + (data (i32.const 152) "34") + (data (i32.const 156) "35") + (data (i32.const 160) "36") + (data (i32.const 164) "37") + (data (i32.const 168) "38") + (data (i32.const 172) "39") + (data (i32.const 176) "40") + (data (i32.const 180) "41") + (data (i32.const 184) "42") + (data (i32.const 188) "43") + (data (i32.const 192) "44") + (data (i32.const 196) "45") + (data (i32.const 200) "46") + (data (i32.const 204) "47") + (data (i32.const 208) "48") + (data (i32.const 212) "49") + (data (i32.const 216) "50") + (data (i32.const 220) "51") + (data (i32.const 224) "52") + (data (i32.const 228) "53") + (data (i32.const 232) "54") + (data (i32.const 236) "55") + (data (i32.const 240) "56") + (data (i32.const 244) "57") + (data (i32.const 248) "58") + (data (i32.const 252) "59") + (data (i32.const 256) "60") + (data (i32.const 260) "61") + (data (i32.const 264) "62") + (data (i32.const 268) "63") + (data (i32.const 272) "64") + (data (i32.const 276) "65") + (data (i32.const 280) "66") + (data (i32.const 284) "67") + (data (i32.const 288) "68") + (export "is_nan64" (func $is_nan64)) + (export "is_nan32" (func $is_nan32)) + (export "f64_promote_f32" (func $f64_promote_f32)) + (export "apply" (func $apply)) + (export "assert_returnf32" (func $assert_returnf32)) + (export "assert_returnf64" (func $assert_returnf64)) + (export "assert_return_nan32" (func $assert_return_nan32)) + (export "assert_return_nan64" (func $assert_return_nan64)) + (func $f64_promote_f32 (param $0 f32) (result f64) (f64.promote/f32 (get_local $0))) + (func $f32_demote_f64 (param $0 f64) (result f32) (f32.demote/f64 (get_local $0))) + (func $assert_returni32 (param $0 i32) (param $1 i32 ) (param $2 i32) (call $eosio_assert(i32.eq (get_local $0)(get_local $1)) (get_local $2))) + (func $assert_returni64 (param $0 i64) (param $1 i64 ) (param $2 i32) (call $eosio_assert(i64.eq (get_local $0)(get_local $1)) (get_local $2))) + (func $assert_returnf32 (param $0 f32) (param $1 f32 ) (param $2 i32) (call $eosio_assert(i32.eq (i32.reinterpret/f32 (get_local $0)) (i32.reinterpret/f32 (get_local $1))) (get_local $2))) + (func $assert_returnf64 (param $0 f64) (param $1 f64 ) (param $2 i32) (call $eosio_assert(i64.eq (i64.reinterpret/f64 (get_local $0)) (i64.reinterpret/f64 (get_local $1))) (get_local $2))) + (func $is_nan32 (param $0 f32) (result i32) + (i32.gt_u + (i32.and + (i32.reinterpret/f32 + (get_local $0) + ) + (i32.const 2147483647) + ) + (i32.const 2139095040) + ) + ) + (func $is_nan64 (param $0 f64) (result i32) + (i64.gt_u + (i64.and + (i64.reinterpret/f64 + (get_local $0) + ) + (i64.const 9223372036854775807) + ) + (i64.const 9218868437227405312) + ) + ) + (func $assert_return_nan32 (param $0 f32) (param $1 i32)( call $eosio_assert (call $is_nan32 (get_local $0)) (get_local $1))) + (func $assert_return_nan64 (param $0 f64) (param $1 i32)( call $eosio_assert (call $is_nan64 (get_local $0)) (get_local $1))) + (func $apply (param $0 i64)(param $1 i64) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const 0.0)) (f64.const 0.0) (i32.const 20)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const -0.0)) (f64.const -0.0) (i32.const 24)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const 0x1p-149)) (f64.const 0x1p-149) (i32.const 28)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const -0x1p-149)) (f64.const -0x1p-149) (i32.const 32)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const 1.0)) (f64.const 1.0) (i32.const 36)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const -1.0)) (f64.const -1.0) (i32.const 40)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const -0x1.fffffep+127)) (f64.const -0x1.fffffep+127) (i32.const 44)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const 0x1.fffffep+127)) (f64.const 0x1.fffffep+127) (i32.const 48)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const 0x1p-119)) (f64.const 0x1p-119) (i32.const 52)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const 0x1.8f867ep+125)) (f64.const 6.6382536710104395e+37) (i32.const 56)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const inf)) (f64.const inf) (i32.const 60)) + (call $assert_returnf64 (call $f64_promote_f32 (f32.const -inf)) (f64.const -inf) (i32.const 64)) + (call $assert_return_nan64 (call $f64_promote_f32 (f32.const nan)) (i32.const 68)) + (call $assert_return_nan64 (call $f64_promote_f32 (f32.const nan:0x200000)) (i32.const 72)) + (call $assert_return_nan64 (call $f64_promote_f32 (f32.const -nan)) (i32.const 76)) + (call $assert_return_nan64 (call $f64_promote_f32 (f32.const -nan:0x200000)) (i32.const 80)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0.0)) (f32.const 0.0) (i32.const 84)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0.0)) (f32.const -0.0) (i32.const 88)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x0.0000000000001p-1022)) (f32.const 0.0) (i32.const 92)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x0.0000000000001p-1022)) (f32.const -0.0) (i32.const 96)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 1.0)) (f32.const 1.0) (i32.const 100)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -1.0)) (f32.const -1.0) (i32.const 104)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffe0000000p-127)) (f32.const 0x1p-126) (i32.const 108)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.fffffe0000000p-127)) (f32.const -0x1p-126) (i32.const 112)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffdfffffffp-127)) (f32.const 0x1.fffffcp-127) (i32.const 116)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.fffffdfffffffp-127)) (f32.const -0x1.fffffcp-127) (i32.const 120)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1p-149)) (f32.const 0x1p-149) (i32.const 124)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1p-149)) (f32.const -0x1p-149) (i32.const 128)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffd0000000p+127)) (f32.const 0x1.fffffcp+127) (i32.const 132)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.fffffd0000000p+127)) (f32.const -0x1.fffffcp+127) (i32.const 136)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffd0000001p+127)) (f32.const 0x1.fffffep+127) (i32.const 140)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.fffffd0000001p+127)) (f32.const -0x1.fffffep+127) (i32.const 144)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127) (i32.const 148)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127) (i32.const 152)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffefffffffp+127)) (f32.const 0x1.fffffep+127) (i32.const 156)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.fffffefffffffp+127)) (f32.const -0x1.fffffep+127) (i32.const 160)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.ffffffp+127)) (f32.const inf) (i32.const 164)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.ffffffp+127)) (f32.const -inf) (i32.const 168)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1p-119)) (f32.const 0x1p-119) (i32.const 172)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.8f867ep+125)) (f32.const 0x1.8f867ep+125) (i32.const 176)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const inf)) (f32.const inf) (i32.const 180)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -inf)) (f32.const -inf) (i32.const 184)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000000000001p+0)) (f32.const 1.0) (i32.const 188)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.fffffffffffffp-1)) (f32.const 1.0) (i32.const 192)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000010000000p+0)) (f32.const 0x1.000000p+0) (i32.const 196)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000010000001p+0)) (f32.const 0x1.000002p+0) (i32.const 200)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.000002fffffffp+0)) (f32.const 0x1.000002p+0) (i32.const 204)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000030000000p+0)) (f32.const 0x1.000004p+0) (i32.const 208)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000050000000p+0)) (f32.const 0x1.000004p+0) (i32.const 212)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000010000000p+24)) (f32.const 0x1.0p+24) (i32.const 216)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000010000001p+24)) (f32.const 0x1.000002p+24) (i32.const 220)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.000002fffffffp+24)) (f32.const 0x1.000002p+24) (i32.const 224)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000030000000p+24)) (f32.const 0x1.000004p+24) (i32.const 228)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.4eae4f7024c7p+108)) (f32.const 0x1.4eae5p+108) (i32.const 232)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.a12e71e358685p-113)) (f32.const 0x1.a12e72p-113) (i32.const 236)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.cb98354d521ffp-127)) (f32.const 0x1.cb9834p-127) (i32.const 240)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.6972b30cfb562p+1)) (f32.const -0x1.6972b4p+1) (i32.const 244)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.bedbe4819d4c4p+112)) (f32.const -0x1.bedbe4p+112) (i32.const 248)) + (call $assert_return_nan32 (call $f32_demote_f64 (f64.const nan)) (i32.const 252)) + (call $assert_return_nan32 (call $f32_demote_f64 (f64.const nan:0x4000000000000)) (i32.const 256)) + (call $assert_return_nan32 (call $f32_demote_f64 (f64.const -nan)) (i32.const 260)) + (call $assert_return_nan32 (call $f32_demote_f64 (f64.const -nan:0x4000000000000)) (i32.const 264)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1p-1022)) (f32.const 0.0) (i32.const 268)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1p-1022)) (f32.const -0.0) (i32.const 272)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0p-150)) (f32.const 0.0) (i32.const 276)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.0p-150)) (f32.const -0.0) (i32.const 280)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const 0x1.0000000000001p-150)) (f32.const 0x1p-149) (i32.const 284)) + (call $assert_returnf32 (call $f32_demote_f64 (f64.const -0x1.0000000000001p-150)) (f32.const -0x1p-149) (i32.const 288)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const 0.0)) (i32.const 0) (i32.const 292)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -0.0)) (i32.const 0) (i32.const 296)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const 0x1p-149)) (i32.const 0) (i32.const 300)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -0x1p-149)) (i32.const 0) (i32.const 304)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const 1.0)) (i32.const 1) (i32.const 308)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const 0x1.19999ap+0)) (i32.const 1) (i32.const 312)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const 1.5)) (i32.const 1) (i32.const 316)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -1.0)) (i32.const -1) (i32.const 320)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -0x1.19999ap+0)) (i32.const -1) (i32.const 324)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -1.5)) (i32.const -1) (i32.const 328)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -1.9)) (i32.const -1) (i32.const 332)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -2.0)) (i32.const -2) (i32.const 336)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const 2147483520.0)) (i32.const 2147483520) (i32.const 340)) + (call $assert_returni32 (call $i32_trunc_s_f32 (f32.const -2147483648.0)) (i32.const -2147483648) (i32.const 344)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 0.0)) (i32.const 0) (i32.const 348)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const -0.0)) (i32.const 0) (i32.const 352)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 0x1p-149)) (i32.const 0) (i32.const 356)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const -0x1p-149)) (i32.const 0) (i32.const 360)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 1.0)) (i32.const 1) (i32.const 364)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 0x1.19999ap+0)) (i32.const 1) (i32.const 368)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 1.5)) (i32.const 1) (i32.const 372)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 1.9)) (i32.const 1) (i32.const 376)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 2.0)) (i32.const 2) (i32.const 380)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 000 (i32.const 384)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const 4294967040.0)) (i32.const -256) (i32.const 388)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const -0x1.ccccccp-1)) (i32.const 0) (i32.const 392)) + (call $assert_returni32 (call $i32_trunc_u_f32 (f32.const -0x1.fffffep-1)) (i32.const 0) (i32.const 396)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const 0.0)) (i32.const 0) (i32.const 400)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -0.0)) (i32.const 0) (i32.const 404)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 408)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 412)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const 1.0)) (i32.const 1) (i32.const 416)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const 0x1.199999999999ap+0)) (i32.const 1) (i32.const 420)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const 1.5)) (i32.const 1) (i32.const 424)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -1.0)) (i32.const -1) (i32.const 428)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -0x1.199999999999ap+0)) (i32.const -1) (i32.const 432)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -1.5)) (i32.const -1) (i32.const 436)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -1.9)) (i32.const -1) (i32.const 440)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -2.0)) (i32.const -2) (i32.const 444)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const 2147483647.0)) (i32.const 2147483647) (i32.const 448)) + (call $assert_returni32 (call $i32_trunc_s_f64 (f64.const -2147483648.0)) (i32.const -2147483648) (i32.const 452)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 0.0)) (i32.const 0) (i32.const 456)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const -0.0)) (i32.const 0) (i32.const 460)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 0x0.0000000000001p-1022)) (i32.const 0) (i32.const 464)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const -0x0.0000000000001p-1022)) (i32.const 0) (i32.const 468)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 1.0)) (i32.const 1) (i32.const 472)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 0x1.199999999999ap+0)) (i32.const 1) (i32.const 476)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 1.5)) (i32.const 1) (i32.const 480)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 1.9)) (i32.const 1) (i32.const 484)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 2.0)) (i32.const 2) (i32.const 488)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 000 (i32.const 492)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 4294967295.0)) (i32.const -1) (i32.const 496)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const -0x1.ccccccccccccdp-1)) (i32.const 0) (i32.const 500)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const -0x1.fffffffffffffp-1)) (i32.const 0) (i32.const 504)) + (call $assert_returni32 (call $i32_trunc_u_f64 (f64.const 1e8)) (i32.const 100000000) (i32.const 508)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 0.0)) (i64.const 0) (i32.const 512)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -0.0)) (i64.const 0) (i32.const 516)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 0x1p-149)) (i64.const 0) (i32.const 520)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -0x1p-149)) (i64.const 0) (i32.const 524)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 1.0)) (i64.const 1) (i32.const 528)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 0x1.19999ap+0)) (i64.const 1) (i32.const 532)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 1.5)) (i64.const 1) (i32.const 536)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -1.0)) (i64.const -1) (i32.const 540)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -0x1.19999ap+0)) (i64.const -1) (i32.const 544)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -1.5)) (i64.const -1) (i32.const 548)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -1.9)) (i64.const -1) (i32.const 552)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -2.0)) (i64.const -2) (i32.const 556)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 000 (i32.const 560)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 000 (i32.const 564)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const 9223371487098961920.0)) (i64.const 9223371487098961920) (i32.const 568)) + (call $assert_returni64 (call $i64_trunc_s_f32 (f32.const -9223372036854775808.0)) (i64.const -9223372036854775808) (i32.const 572)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 0.0)) (i64.const 0) (i32.const 576)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const -0.0)) (i64.const 0) (i32.const 580)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 0x1p-149)) (i64.const 0) (i32.const 584)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const -0x1p-149)) (i64.const 0) (i32.const 588)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 1.0)) (i64.const 1) (i32.const 592)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 0x1.19999ap+0)) (i64.const 1) (i32.const 596)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 1.5)) (i64.const 1) (i32.const 600)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 4294967296)) (i64.const 4294967296) (i32.const 604)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const 18446742974197923840.0)) (i64.const -1099511627776) (i32.const 608)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const -0x1.ccccccp-1)) (i64.const 0) (i32.const 612)) + (call $assert_returni64 (call $i64_trunc_u_f32 (f32.const -0x1.fffffep-1)) (i64.const 0) (i32.const 616)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 0.0)) (i64.const 0) (i32.const 620)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -0.0)) (i64.const 0) (i32.const 624)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 0x0.0000000000001p-1022)) (i64.const 0) (i32.const 628)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -0x0.0000000000001p-1022)) (i64.const 0) (i32.const 632)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 1.0)) (i64.const 1) (i32.const 636)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 0x1.199999999999ap+0)) (i64.const 1) (i32.const 640)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 1.5)) (i64.const 1) (i32.const 644)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -1.0)) (i64.const -1) (i32.const 648)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -0x1.199999999999ap+0)) (i64.const -1) (i32.const 652)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -1.5)) (i64.const -1) (i32.const 656)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -1.9)) (i64.const -1) (i32.const 660)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -2.0)) (i64.const -2) (i32.const 664)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 000 (i32.const 668)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 000 (i32.const 672)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const 9223372036854774784.0)) (i64.const 9223372036854774784) (i32.const 676)) + (call $assert_returni64 (call $i64_trunc_s_f64 (f64.const -9223372036854775808.0)) (i64.const -9223372036854775808) (i32.const 680)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 0.0)) (i64.const 0) (i32.const 684)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const -0.0)) (i64.const 0) (i32.const 688)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 0x0.0000000000001p-1022)) (i64.const 0) (i32.const 692)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const -0x0.0000000000001p-1022)) (i64.const 0) (i32.const 696)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 1.0)) (i64.const 1) (i32.const 700)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 0x1.199999999999ap+0)) (i64.const 1) (i32.const 704)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 1.5)) (i64.const 1) (i32.const 708)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 4294967295)) (i64.const 0xffffffff) (i32.const 712)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 4294967296)) (i64.const 0x100000000) (i32.const 716)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 18446744073709549568.0)) (i64.const -2048) (i32.const 720)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const -0x1.ccccccccccccdp-1)) (i64.const 0) (i32.const 724)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const -0x1.fffffffffffffp-1)) (i64.const 0) (i32.const 728)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 1e8)) (i64.const 100000000) (i32.const 732)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 1e16)) (i64.const 10000000000000000) (i32.const 736)) + (call $assert_returni64 (call $i64_trunc_u_f64 (f64.const 9223372036854775808)) (i64.const -9223372036854775808) (i32.const 740)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const 1)) (f32.const 1.0) (i32.const 744)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const -1)) (f32.const -1.0) (i32.const 748)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const 0)) (f32.const 0.0) (i32.const 752)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const 2147483647)) (f32.const 2147483648) (i32.const 756)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const -2147483648)) (f32.const -2147483648) (i32.const 760)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const 1234567890)) (f32.const 0x1.26580cp+30) (i32.const 764)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const 16777217)) (f32.const 16777216.0) (i32.const 768)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const -16777217)) (f32.const -16777216.0) (i32.const 772)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const 16777219)) (f32.const 16777220.0) (i32.const 776)) + (call $assert_returni64 (call $f32_convert_s_i32 (i32.const -16777219)) (f32.const -16777220.0) (i32.const 780)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const 1)) (f32.const 1.0) (i32.const 784)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const -1)) (f32.const -1.0) (i32.const 788)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const 0)) (f32.const 0.0) (i32.const 792)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const 9223372036854775807)) (f32.const 9223372036854775807) (i32.const 796)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const -9223372036854775808)) (f32.const -9223372036854775808) (i32.const 800)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const 314159265358979)) (f32.const 0x1.1db9e8p+48)) ;; P (i32.const 804)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const 16777217)) (f32.const 16777216.0) (i32.const 808)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const -16777217)) (f32.const -16777216.0) (i32.const 812)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const 16777219)) (f32.const 16777220.0) (i32.const 816)) + (call $assert_returni64 (call $f32_convert_s_i64 (i64.const -16777219)) (f32.const -16777220.0) (i32.const 820)) + (call $assert_returni64 (call $f64_convert_s_i32 (i32.const 1)) (f64.const 1.0) (i32.const 824)) + (call $assert_returni64 (call $f64_convert_s_i32 (i32.const -1)) (f64.const -1.0) (i32.const 828)) + (call $assert_returni64 (call $f64_convert_s_i32 (i32.const 0)) (f64.const 0.0) (i32.const 832)) + (call $assert_returni64 (call $f64_convert_s_i32 (i32.const 2147483647)) (f64.const 2147483647) (i32.const 836)) + (call $assert_returni64 (call $f64_convert_s_i32 (i32.const -2147483648)) (f64.const -2147483648) (i32.const 840)) + (call $assert_returni64 (call $f64_convert_s_i32 (i32.const 987654321)) (f64.const 987654321) (i32.const 844)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const 1)) (f64.const 1.0) (i32.const 848)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const -1)) (f64.const -1.0) (i32.const 852)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const 0)) (f64.const 0.0) (i32.const 856)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const 9223372036854775807)) (f64.const 9223372036854775807) (i32.const 860)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const -9223372036854775808)) (f64.const -9223372036854775808) (i32.const 864)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const 4669201609102990)) (f64.const 4669201609102990)) ;; Feigenbau (i32.const 868)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const 9007199254740993)) (f64.const 9007199254740992) (i32.const 872)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const -9007199254740993)) (f64.const -9007199254740992) (i32.const 876)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const 9007199254740995)) (f64.const 9007199254740996) (i32.const 880)) + (call $assert_returni64 (call $f64_convert_s_i64 (i64.const -9007199254740995)) (f64.const -9007199254740996) (i32.const 884)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 1)) (f32.const 1.0) (i32.const 888)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0)) (f32.const 0.0) (i32.const 892)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 2147483647)) (f32.const 2147483648) (i32.const 896)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const -2147483648)) (f32.const 2147483648) (i32.const 900)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0x12345678)) (f32.const 0x1.234568p+28) (i32.const 904)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0xffffffff)) (f32.const 4294967296.0) (i32.const 908)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0x80000080)) (f32.const 0x1.000000p+31) (i32.const 912)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0x80000081)) (f32.const 0x1.000002p+31) (i32.const 916)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0x80000082)) (f32.const 0x1.000002p+31) (i32.const 920)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0xfffffe80)) (f32.const 0x1.fffffcp+31) (i32.const 924)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0xfffffe81)) (f32.const 0x1.fffffep+31) (i32.const 928)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 0xfffffe82)) (f32.const 0x1.fffffep+31) (i32.const 932)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 16777217)) (f32.const 16777216.0) (i32.const 936)) + (call $assert_returni64 (call $f32_convert_u_i32 (i32.const 16777219)) (f32.const 16777220.0) (i32.const 940)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const 1)) (f32.const 1.0) (i32.const 944)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const 0)) (f32.const 0.0) (i32.const 948)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const 9223372036854775807)) (f32.const 9223372036854775807) (i32.const 952)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const -9223372036854775808)) (f32.const 9223372036854775808) (i32.const 956)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const 0xffffffffffffffff)) (f32.const 18446744073709551616.0) (i32.const 960)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const 16777217)) (f32.const 16777216.0) (i32.const 964)) + (call $assert_returni64 (call $f32_convert_u_i64 (i64.const 16777219)) (f32.const 16777220.0) (i32.const 968)) + (call $assert_returni64 (call $f64_convert_u_i32 (i32.const 1)) (f64.const 1.0) (i32.const 972)) + (call $assert_returni64 (call $f64_convert_u_i32 (i32.const 0)) (f64.const 0.0) (i32.const 976)) + (call $assert_returni64 (call $f64_convert_u_i32 (i32.const 2147483647)) (f64.const 2147483647) (i32.const 980)) + (call $assert_returni64 (call $f64_convert_u_i32 (i32.const -2147483648)) (f64.const 2147483648) (i32.const 984)) + (call $assert_returni64 (call $f64_convert_u_i32 (i32.const 0xffffffff)) (f64.const 4294967295.0) (i32.const 988)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 1)) (f64.const 1.0) (i32.const 992)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0)) (f64.const 0.0) (i32.const 996)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 9223372036854775807)) (f64.const 9223372036854775807) (i32.const 1000)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const -9223372036854775808)) (f64.const 9223372036854775808) (i32.const 1004)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0xffffffffffffffff)) (f64.const 18446744073709551616.0) (i32.const 1008)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0x8000000000000400)) (f64.const 0x1.0000000000000p+63) (i32.const 1012)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0x8000000000000401)) (f64.const 0x1.0000000000001p+63) (i32.const 1016)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0x8000000000000402)) (f64.const 0x1.0000000000001p+63) (i32.const 1020)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0xfffffffffffff400)) (f64.const 0x1.ffffffffffffep+63) (i32.const 1024)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0xfffffffffffff401)) (f64.const 0x1.fffffffffffffp+63) (i32.const 1028)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 0xfffffffffffff402)) (f64.const 0x1.fffffffffffffp+63) (i32.const 1032)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 9007199254740993)) (f64.const 9007199254740992) (i32.const 1036)) + (call $assert_returni64 (call $f64_convert_u_i64 (i64.const 9007199254740995)) (f64.const 9007199254740996) (i32.const 1040)) +)) +)====="; + diff --git a/tests/wasm_tests/test_wasts.hpp b/tests/wasm_tests/test_wasts.hpp index 788010cd7add52dfab9ed5415b8ff3dc0f7680c5..d8f9d9f57904d25f27dc0d8acabb4ecdbb1a8c4f 100644 --- a/tests/wasm_tests/test_wasts.hpp +++ b/tests/wasm_tests/test_wasts.hpp @@ -1,7 +1,20 @@ #pragma once // These are handcrafted or otherwise tricky to generate with our tool chain - +/* +static const char f32_add_wast[] = R"=====( +(module + (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) + (table 0 anyfunc) + (memory $0 1) + (export "memory" (memory $0)) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) + (call $eosio_assert (i32.eq (i32.trunc_u/f32 (f32.const 0x3f800000)) (i32.const 0x0)) (i32.const 0)) + ) + ) +)====="; +*/ static const char entry_wast[] = R"=====( (module (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) @@ -57,50 +70,22 @@ static const char mutable_global_wast[] = R"=====( (export "memory" (memory $0)) (export "apply" (func $apply)) (func $apply (param $0 i64) (param $1 i64) - (if (i64.eq (get_local $1) (i64.const 0)) + (if (i64.eq (get_local $1) (i64.const 0)) (then (set_global $g0 (i64.const 444)) - ) - (if (i64.eq (get_local $1) (i64.const 1)) + (return) + )) + (if (i64.eq (get_local $1) (i64.const 1)) (then (call $eosio_assert (i64.eq (get_global $g0) (i64.const 2)) (i32.const 0)) - ) + (return) + )) + (call $eosio_assert (i32.const 0) (i32.const 0)) ) (global $g0 (mut i64) (i64.const 2)) ) )====="; -static const char current_memory_wast[] = R"=====( -(module - (table 0 anyfunc) - (memory $0 1) - (export "memory" (memory $0)) - (export "apply" (func $apply)) - (func $apply (param $0 i64) (param $1 i64) - (drop - (current_memory) - ) - ) -) -)====="; - -static const char grow_memory_wast[] = R"=====( -(module - (table 0 anyfunc) - (memory $0 1) - (export "memory" (memory $0)) - (export "apply" (func $apply)) - (func $apply (param $0 i64) (param $1 i64) - (drop - (grow_memory - (i32.const 20) - ) - ) - ) -) -)====="; - static const char biggest_memory_wast[] = R"=====( (module - (import "env" "sbrk" (func $$sbrk (param i32) (result i32))) (import "env" "eosio_assert" (func $$eosio_assert (param i32 i32))) (table 0 anyfunc) (memory $$0 ${MAX_WASM_PAGES}) @@ -110,9 +95,7 @@ static const char biggest_memory_wast[] = R"=====( (func $$apply (param $$0 i64) (param $$1 i64) (call $$eosio_assert (i32.eq - (call $$sbrk - (i32.const 1) - ) + (grow_memory (i32.const 1)) (i32.const -1) ) (i32.const 0) @@ -134,6 +117,7 @@ static const char too_big_memory_wast[] = R"=====( static const char valid_sparse_table[] = R"=====( (module (table 1024 anyfunc) + (export "apply" (func $apply)) (func $apply (param $0 i64) (param $1 i64)) (elem (i32.const 0) $apply) (elem (i32.const 1022) $apply $apply) @@ -143,6 +127,7 @@ static const char valid_sparse_table[] = R"=====( static const char too_big_table[] = R"=====( (module (table 1025 anyfunc) + (export "apply" (func $apply)) (func $apply (param $0 i64) (param $1 i64)) (elem (i32.const 0) $apply) (elem (i32.const 1022) $apply $apply) @@ -152,6 +137,8 @@ static const char too_big_table[] = R"=====( static const char memory_init_borderline[] = R"=====( (module (memory $0 16) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64)) (data (i32.const 65532) "sup!") ) )====="; @@ -159,6 +146,8 @@ static const char memory_init_borderline[] = R"=====( static const char memory_init_toolong[] = R"=====( (module (memory $0 16) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64)) (data (i32.const 65533) "sup!") ) )====="; @@ -166,6 +155,8 @@ static const char memory_init_toolong[] = R"=====( static const char memory_init_negative[] = R"=====( (module (memory $0 16) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64)) (data (i32.const -1) "sup!") ) )====="; @@ -174,6 +165,8 @@ static const char memory_table_import[] = R"=====( (module (table (import "foo" "table") 10 anyfunc) (memory (import "nom" "memory") 0) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64)) ) )====="; @@ -292,3 +285,130 @@ static const char table_checker_small_wast[] = R"=====( (elem (i32.const 0) $apple) ) )====="; + +static const char global_protection_none_get_wast[] = R"=====( +(module + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) + (drop (get_global 0)) + ) +) +)====="; + +static const char global_protection_some_get_wast[] = R"=====( +(module + (global i32 (i32.const -11)) + (global i32 (i32.const 56)) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) + (drop (get_global 1)) + (drop (get_global 2)) + ) +) +)====="; + +static const char global_protection_none_set_wast[] = R"=====( +(module + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) + (set_global 0 (get_local 0)) + ) +) +)====="; + +static const char global_protection_some_set_wast[] = R"=====( +(module + (global i64 (i64.const -11)) + (global i64 (i64.const 56)) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) + (set_global 2 (get_local 0)) + ) +) +)====="; + +static const std::vector global_protection_okay_get_wasm{ + 0x00, 'a', 's', 'm', 0x01, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x01, 0x60, 0x02, 0x7e, 0x7e, 0x00, //type section containing a function as void(i64,i64) + 0x03, 0x02, 0x01, 0x00, //a function + + 0x06, 0x06, 0x01, 0x7f, 0x00, 0x41, 0x75, 0x0b, //global + + 0x07, 0x09, 0x01, 0x05, 'a', 'p', 'p', 'l', 'y', 0x00, 0x00, //export function 0 as "apply" + 0x0a, 0x07, 0x01, //code section + 0x05, 0x00, //function body start with length 5; no locals + 0x23, 0x00, //get global 0 + 0x1a, //drop + 0x0b //end +}; + +static const std::vector global_protection_none_get_wasm{ + 0x00, 'a', 's', 'm', 0x01, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x01, 0x60, 0x02, 0x7e, 0x7e, 0x00, //type section containing a function as void(i64,i64) + 0x03, 0x02, 0x01, 0x00, //a function + + 0x07, 0x09, 0x01, 0x05, 'a', 'p', 'p', 'l', 'y', 0x00, 0x00, //export function 0 as "apply" + 0x0a, 0x07, 0x01, //code section + 0x05, 0x00, //function body start with length 5; no locals + 0x23, 0x00, //get global 0 + 0x1a, //drop + 0x0b //end +}; + +static const std::vector global_protection_some_get_wasm{ + 0x00, 'a', 's', 'm', 0x01, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x01, 0x60, 0x02, 0x7e, 0x7e, 0x00, //type section containing a function as void(i64,i64) + 0x03, 0x02, 0x01, 0x00, //a function + + 0x06, 0x06, 0x01, 0x7f, 0x00, 0x41, 0x75, 0x0b, //global + + 0x07, 0x09, 0x01, 0x05, 'a', 'p', 'p', 'l', 'y', 0x00, 0x00, //export function 0 as "apply" + 0x0a, 0x07, 0x01, //code section + 0x05, 0x00, //function body start with length 5; no locals + 0x23, 0x01, //get global 1 + 0x1a, //drop + 0x0b //end +}; + +static const std::vector global_protection_okay_set_wasm{ + 0x00, 'a', 's', 'm', 0x01, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x01, 0x60, 0x02, 0x7e, 0x7e, 0x00, //type section containing a function as void(i64,i64) + 0x03, 0x02, 0x01, 0x00, //a function + + 0x06, 0x06, 0x01, 0x7e, 0x01, 0x42, 0x75, 0x0b, //global.. this time with i64 & global mutablity + + 0x07, 0x09, 0x01, 0x05, 'a', 'p', 'p', 'l', 'y', 0x00, 0x00, //export function 0 as "apply" + 0x0a, 0x08, 0x01, //code section + 0x06, 0x00, //function body start with length 6; no locals + 0x20, 0x00, //get local 0 + 0x24, 0x00, //set global 0 + 0x0b //end +}; + +static const std::vector global_protection_some_set_wasm{ + 0x00, 'a', 's', 'm', 0x01, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x01, 0x60, 0x02, 0x7e, 0x7e, 0x00, //type section containing a function as void(i64,i64) + 0x03, 0x02, 0x01, 0x00, //a function + + 0x06, 0x06, 0x01, 0x7e, 0x01, 0x42, 0x75, 0x0b, //global.. this time with i64 & global mutablity + + 0x07, 0x09, 0x01, 0x05, 'a', 'p', 'p', 'l', 'y', 0x00, 0x00, //export function 0 as "apply" + 0x0a, 0x08, 0x01, //code section + 0x06, 0x00, //function body start with length 6; no locals + 0x20, 0x00, //get local 0 + 0x24, 0x01, //set global 1 + 0x0b //end +}; + +static const char no_apply_wast[] = R"=====( +(module + (func $apply (param $0 i64) (param $1 i64)) +) +)====="; + +static const char apply_wrong_signature_wast[] = R"=====( +(module + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 f64)) +) +)====="; \ No newline at end of file diff --git a/tests/wasm_tests/wasm_tests.cpp b/tests/wasm_tests/wasm_tests.cpp index 7d8775449ae7a2d92878bd07802fd7adbb265879..eaad0b7733088f0e7a8e4f240986bc1aa9554ce5 100644 --- a/tests/wasm_tests/wasm_tests.cpp +++ b/tests/wasm_tests/wasm_tests.cpp @@ -21,6 +21,7 @@ #include #include "test_wasts.hpp" +#include "test_softfloat_wasts.hpp" #include #include @@ -202,6 +203,158 @@ BOOST_FIXTURE_TEST_CASE( abi_from_variant, tester ) try { } FC_LOG_AND_RETHROW() /// prove_mem_reset +// test softfloat 32 bit operations +BOOST_FIXTURE_TEST_CASE( f32_tests, tester ) try { + produce_blocks(2); + + create_accounts( {N(f32_tests)} ); + produce_block(); + { + set_code(N(f32_tests), f32_test_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f32_tests); + act.name = N(); + act.authorization = vector{{N(f32_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f32_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } + { + set_code(N(f32_tests), f32_bitwise_test_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f32_tests); + act.name = N(); + act.authorization = vector{{N(f32_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f32_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } + { + set_code(N(f32_tests), f32_cmp_test_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f32_tests); + act.name = N(); + act.authorization = vector{{N(f32_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f32_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } +} FC_LOG_AND_RETHROW() + +// test softfloat 64 bit operations +BOOST_FIXTURE_TEST_CASE( f64_tests, tester ) try { + produce_blocks(2); + + create_accounts( {N(f_tests)} ); + produce_block(); + { + set_code(N(f_tests), f64_test_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f_tests); + act.name = N(); + act.authorization = vector{{N(f_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } + { + set_code(N(f_tests), f64_bitwise_test_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f_tests); + act.name = N(); + act.authorization = vector{{N(f_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } + { + set_code(N(f_tests), f64_cmp_test_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f_tests); + act.name = N(); + act.authorization = vector{{N(f_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } +} FC_LOG_AND_RETHROW() + +#if 0 +// test softfloat conversion operations +BOOST_FIXTURE_TEST_CASE( f32_f64_conversion_tests, tester ) try { + produce_blocks(2); + + create_accounts( {N(f_tests)} ); + produce_block(); + { + set_code(N(f_tests), f32_f64_conv_wast); + produce_blocks(10); + + signed_transaction trx; + action act; + act.account = N(f_tests); + act.name = N(); + act.authorization = vector{{N(f_tests),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(f_tests), "active" ), chain_id_type()); + push_transaction(trx); + produce_blocks(1); + BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); + const auto& receipt = get_transaction_receipt(trx.id()); + } +} FC_LOG_AND_RETHROW() +#endif + /** * Make sure WASM "start" method is used correctly */ @@ -327,21 +480,6 @@ BOOST_FIXTURE_TEST_CASE( stl_test, tester ) try { } } FC_LOG_AND_RETHROW() /// stltest -//Make sure current_memory/grow_memory is not allowed -BOOST_FIXTURE_TEST_CASE( memory_operators, tester ) try { - produce_blocks(2); - - create_accounts( {N(current_memory)} ); - produce_block(); - - BOOST_CHECK_THROW(set_code(N(current_memory), current_memory_wast), eosio::chain::wasm_execution_error); - produce_blocks(1); - - BOOST_CHECK_THROW(set_code(N(current_memory), grow_memory_wast), eosio::chain::wasm_execution_error); - produce_blocks(1); - -} FC_LOG_AND_RETHROW() - //Make sure we can create a wasm with maximum pages, but not grow it any BOOST_FIXTURE_TEST_CASE( big_memory, tester ) try { produce_blocks(2); @@ -427,7 +565,7 @@ BOOST_FIXTURE_TEST_CASE( lotso_globals, tester ) try { produce_block(); std::stringstream ss; - ss << "(module "; + ss << "(module (export \"apply\" (func $apply)) (func $apply (param $0 i64) (param $1 i64))"; for(unsigned int i = 0; i < 85; ++i) ss << "(global $g" << i << " (mut i32) (i32.const 0))" << "(global $g" << i+100 << " (mut i64) (i64.const 0))"; //that gives us 1020 bytes of mutable globals @@ -455,17 +593,16 @@ BOOST_FIXTURE_TEST_CASE( offset_check, tester ) try { create_accounts( {N(offsets)} ); produce_block(); - //floats not tested since they are blocked in the serializer before eosio_constraints vector loadops = { - "i32.load", "i64.load", /* "f32.load", "f64.load",*/ "i32.load8_s", "i32.load8_u", + "i32.load", "i64.load", "f32.load", "f64.load", "i32.load8_s", "i32.load8_u", "i32.load16_s", "i32.load16_u", "i64.load8_s", "i64.load8_u", "i64.load16_s", "i64.load16_u", "i64.load32_s", "i64.load32_u" }; vector> storeops = { {"i32.store", "i32"}, {"i64.store", "i64"}, - /*{"f32.store", "f32"}, - {"f64.store", "f64"},*/ + {"f32.store", "f32"}, + {"f64.store", "f64"}, {"i32.store8", "i32"}, {"i32.store16", "i32"}, {"i64.store8", "i64"}, @@ -477,7 +614,7 @@ BOOST_FIXTURE_TEST_CASE( offset_check, tester ) try { std::stringstream ss; ss << "(module (memory $0 " << eosio::chain::wasm_constraints::maximum_linear_memory/(64*1024) << ") (func $apply (param $0 i64) (param $1 i64) "; ss << "(drop (" << s << " offset=" << eosio::chain::wasm_constraints::maximum_linear_memory-2 << " (i32.const 0)))"; - ss << "))"; + ss << ") (export \"apply\" (func $apply)) )"; set_code(N(offsets), ss.str().c_str()); produce_block(); @@ -486,7 +623,7 @@ BOOST_FIXTURE_TEST_CASE( offset_check, tester ) try { std::stringstream ss; ss << "(module (memory $0 " << eosio::chain::wasm_constraints::maximum_linear_memory/(64*1024) << ") (func $apply (param $0 i64) (param $1 i64) "; ss << "(" << o[0] << " offset=" << eosio::chain::wasm_constraints::maximum_linear_memory-2 << " (i32.const 0) (" << o[1] << ".const 0))"; - ss << "))"; + ss << ") (export \"apply\" (func $apply)) )"; set_code(N(offsets), ss.str().c_str()); produce_block(); @@ -496,7 +633,7 @@ BOOST_FIXTURE_TEST_CASE( offset_check, tester ) try { std::stringstream ss; ss << "(module (memory $0 " << eosio::chain::wasm_constraints::maximum_linear_memory/(64*1024) << ") (func $apply (param $0 i64) (param $1 i64) "; ss << "(drop (" << s << " offset=" << eosio::chain::wasm_constraints::maximum_linear_memory+4 << " (i32.const 0)))"; - ss << "))"; + ss << ") (export \"apply\" (func $apply)) )"; BOOST_CHECK_THROW(set_code(N(offsets), ss.str().c_str()), eosio::chain::wasm_execution_error); produce_block(); @@ -505,7 +642,7 @@ BOOST_FIXTURE_TEST_CASE( offset_check, tester ) try { std::stringstream ss; ss << "(module (memory $0 " << eosio::chain::wasm_constraints::maximum_linear_memory/(64*1024) << ") (func $apply (param $0 i64) (param $1 i64) "; ss << "(" << o[0] << " offset=" << eosio::chain::wasm_constraints::maximum_linear_memory+4 << " (i32.const 0) (" << o[1] << ".const 0))"; - ss << "))"; + ss << ") (export \"apply\" (func $apply)) )"; BOOST_CHECK_THROW(set_code(N(offsets), ss.str().c_str()), eosio::chain::wasm_execution_error); produce_block(); @@ -621,8 +758,6 @@ BOOST_FIXTURE_TEST_CASE(eosio_abi, tester) try { BOOST_FIXTURE_TEST_CASE( test_table_key_validation, tester ) try { } FC_LOG_AND_RETHROW() -//busted because of checktime, disable for now -#if 0 BOOST_FIXTURE_TEST_CASE( check_table_maximum, tester ) try { produce_blocks(2); @@ -631,7 +766,6 @@ BOOST_FIXTURE_TEST_CASE( check_table_maximum, tester ) try { set_code(N(tbl), table_checker_wast); produce_blocks(1); - { signed_transaction trx; action act; @@ -739,7 +873,7 @@ BOOST_FIXTURE_TEST_CASE( check_table_maximum, tester ) try { } produce_blocks(1); - +#if 0 { signed_transaction trx; action act; @@ -751,7 +885,6 @@ BOOST_FIXTURE_TEST_CASE( check_table_maximum, tester ) try { trx.sign(get_private_key( N(tbl), "active" ), chain_id_type()); push_transaction(trx); } - set_code(N(tbl), table_checker_small_wast); produce_blocks(1); @@ -766,10 +899,196 @@ BOOST_FIXTURE_TEST_CASE( check_table_maximum, tester ) try { trx.sign(get_private_key( N(tbl), "active" ), chain_id_type()); //an element that is out of range and has no mmap access permission either (should be a trapped segv) - BOOST_CHECK_THROW(push_transaction(trx), eosio::chain::wasm_execution_error); + BOOST_CHECK_EXCEPTION(push_transaction(trx), eosio::chain::wasm_execution_error, [](const eosio::chain::wasm_execution_error &e) {return true;}); } +#endif } FC_LOG_AND_RETHROW() -#endif + +BOOST_FIXTURE_TEST_CASE( protected_globals, tester ) try { + produce_blocks(2); + + create_accounts( {N(gob)} ); + produce_block(); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_none_get_wast), fc::exception); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_some_get_wast), fc::exception); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_none_set_wast), fc::exception); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_some_set_wast), fc::exception); + produce_blocks(1); + + //sanity to make sure I got general binary construction okay + set_code(N(gob), global_protection_okay_get_wasm); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_none_get_wasm), fc::exception); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_some_get_wasm), fc::exception); + produce_blocks(1); + + set_code(N(gob), global_protection_okay_set_wasm); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(gob), global_protection_some_set_wasm), fc::exception); + produce_blocks(1); +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( lotso_stack, tester ) try { + produce_blocks(2); + + create_accounts( {N(stackz)} ); + produce_block(); + + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func "; + for(unsigned int i = 0; i < wasm_constraints::maximum_func_local_bytes; i+=4) + ss << "(local i32)"; + ss << " )"; + ss << ")"; + set_code(N(stackz), ss.str().c_str()); + produce_blocks(1); + } + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func "; + for(unsigned int i = 0; i < wasm_constraints::maximum_func_local_bytes; i+=8) + ss << "(local f64)"; + ss << " )"; + ss << ")"; + set_code(N(stackz), ss.str().c_str()); + produce_blocks(1); + } + + //try to use contract with this many locals (so that it actually gets compiled). Note that + //at this time not having an apply() is an acceptable non-error. + { + signed_transaction trx; + action act; + act.account = N(stackz); + act.name = N(); + act.authorization = vector{{N(stackz),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(stackz), "active" ), chain_id_type()); + push_transaction(trx); + } + + + //too many locals! should fail validation + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func "; + for(unsigned int i = 0; i < wasm_constraints::maximum_func_local_bytes+4; i+=4) + ss << "(local i32)"; + ss << " )"; + ss << ")"; + BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), fc::exception); + produce_blocks(1); + } + + //try again but with parameters + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func "; + for(unsigned int i = 0; i < wasm_constraints::maximum_func_local_bytes; i+=4) + ss << "(param i32)"; + ss << " )"; + ss << ")"; + set_code(N(stackz), ss.str().c_str()); + produce_blocks(1); + } + //try to use contract with this many params + { + signed_transaction trx; + action act; + act.account = N(stackz); + act.name = N(); + act.authorization = vector{{N(stackz),config::active_name}}; + trx.actions.push_back(act); + + set_tapos(trx); + trx.sign(get_private_key( N(stackz), "active" ), chain_id_type()); + push_transaction(trx); + } + + //too many params! + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func "; + for(unsigned int i = 0; i < wasm_constraints::maximum_func_local_bytes+4; i+=4) + ss << "(param i32)"; + ss << " )"; + ss << ")"; + BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), fc::exception); + produce_blocks(1); + } + + //let's mix params and locals are make sure it's counted correctly in mixed case + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func (param i64) (param f32) "; + for(unsigned int i = 12; i < wasm_constraints::maximum_func_local_bytes; i+=4) + ss << "(local i32)"; + ss << " )"; + ss << ")"; + set_code(N(stackz), ss.str().c_str()); + produce_blocks(1); + } + { + std::stringstream ss; + ss << "(module "; + ss << "(export \"apply\" (func $apply))"; + ss << " (func $apply (param $0 i64) (param $1 i64))"; + ss << " (func (param i64) (param f32) "; + for(unsigned int i = 12; i < wasm_constraints::maximum_func_local_bytes+4; i+=4) + ss << "(local f32)"; + ss << " )"; + ss << ")"; + BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), fc::exception); + produce_blocks(1); + } + + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( apply_export_and_signature, tester ) try { + produce_blocks(2); + + create_accounts( {N(bbb)} ); + produce_block(); + + BOOST_CHECK_THROW(set_code(N(bbb), no_apply_wast), fc::exception); + produce_blocks(1); + + BOOST_CHECK_THROW(set_code(N(bbb), apply_wrong_signature_wast), fc::exception); + produce_blocks(1); +} FC_LOG_AND_RETHROW() BOOST_AUTO_TEST_SUITE_END() diff --git a/tools/eosiocpp.in b/tools/eosiocpp.in index 47bc2d2b0a3aeb76632f637bd6c11cbb6dd76f63..a36cdb7c0495144bed91fdc622160f5b20e0229f 100755 --- a/tools/eosiocpp.in +++ b/tools/eosiocpp.in @@ -71,7 +71,7 @@ function generate_abi { exit 1 fi - context_folder=$(realpath $(dirname $1)) + context_folder=$(cd "$(dirname "$1")" ; pwd -P) ${ABIGEN} -extra-arg=-c -extra-arg=--std=c++14 -extra-arg=--target=wasm32 \ -extra-arg=-nostdinc -extra-arg=-nostdinc++ -extra-arg=-DABIGEN \